두 개의 문자열 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