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

Python에서 문자열의 모든 인접 중복 제거

<시간/>

소문자로 된 문자열 S가 있다고 가정합니다. 중복 제거 작업이 수행됩니다. 이것은 두 개의 인접하고 동일한 문자를 선택하고 제거하여 수행됩니다.

중복이 남지 않을 때까지 S에서 중복을 반복적으로 제거합니다.

이러한 모든 중복 제거가 완료된 후 문자열을 반환합니다. 답변이 고유함을 보장합니다.

문자열이 "abbacaca"라고 가정하면 대답은 "caca"가 됩니다. 처음에는 중복 항목 bb를 삭제한 다음 문자열이 "aacaca"이고 aa를 제거하고 문자열이 "caca"이고 중복 항목이 없습니다.

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

  • 배열 st를 정의하고 초기화 i :=0
  • while i <문자열의 길이 −
    • st에 일부 요소가 있고 st =st[i]의 마지막 요소가 있으면 i를 1만큼 증가시키고 st에서 마지막 요소를 삭제합니다.
    • 그렇지 않으면 string[i]를 st에 추가하고 i를 1만큼 증가
  • 마지막으로 st의 모든 요소를 ​​문자열로 결합하고 반환

예시

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

class Solution(object):
   def removeDuplicates(self, S):
      st = []
      i = 0
      while i < len(S):
         if len(st)!=0 and st[-1]==S[i]:
            i+=1
            st.pop(-1)
         else:
            st.append(S[i])
            i+=1
      return "".join(i for i in st)
ob1 = Solution()
print(ob1.removeDuplicates("abbacaca"))

입력

"abbacaca"

출력

"caca"