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

파이썬에서 k 연속 중복 문자를 삭제 한 후 문자열을 찾는 프로그램

<시간/>

문자열 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
    • 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