문자열 s와 다른 값 k가 있다고 가정하고 가장 오래된 k 연속 중복 문자를 반복적으로 삭제하고 마지막 문자열을 반환합니다.
따라서 입력이 s ="paaappmmmma" k =3과 같으면 "pppmmmma"를 얻기 위해 3개의 "a"를 삭제할 때와 같이 출력이 "ma"가 됩니다. 그런 다음 "mmmma"를 얻기 위해 세 개의 "p"를 삭제합니다. 그런 다음 4개의 "m" 중 3개를 삭제하여 "ma"를 얻습니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다.
- 다음 단계를 무한히 수행합니다.
- 카운트:=0
- chars :=s에서 고유한 문자 가져오기
- chars의 각 문자 c에 대해 다음을 수행합니다.
- k개의 연속적인 c가 s에 있으면
- s에서 k 연속 c 삭제
- 카운트 :=카운트 + 1
- k개의 연속적인 c가 s에 있으면
- count가 0과 같으면
- 루프에서 나오다
- 반품
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
예시
class Solution: def solve(self, s, k): while True: count = 0 chars = set(s) for c in chars: if c * k in s: s = s.replace(c * k, "") count += 1 if count == 0: break return s ob = Solution() s = "paaappmmmma" k = 3 print(ob.solve(s, k))
입력
"paaappmmmma", 3
출력
ma