Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 주어진 하위 문자열을 재귀적으로 삭제하여 문자열이 비게 될 수 있는지 확인

<시간/>

두 개의 문자열 s와 t가 있다고 가정합니다. s에서 t를 몇 번이든 삭제할 수 있습니다. 그리고 t는 한 번에 한 번만 나타납니다. 필요한 만큼 t를 제거하여 s가 비어 있을 수 있는지 확인해야 합니다.

따라서 입력이 s ="pipipinnn" t ="pin"과 같으면 "pipipinnn"에서 "pin"을 제거할 수 있으므로 출력은 True가 되고 "pipinn"을 얻고 다시 "pin"을 제거합니다. 문자열 "pin"을 얻은 다음 제거하여 비우십시오.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 크기가 s> 0인 동안 do
    • position :=s에 있는 t의 시작 인덱스
    • 위치가 s에 없으면
      • 루프에서 나오다
    • s :=s에서 t를 한 번 제거
  • s의 크기가 0과 같으면 true를 반환하고 그렇지 않으면 false를 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def solve(s, t):
   while len(s) > 0:
      position = s.find(t)
      if position == -1:
         break
      s = s.replace(t, "", 1)
   return len(s) == 0
s = "pipipinnn"
t = "pin"
print(solve(s, t))

입력

"pipipinnn", "pin"

출력

True