소문자로 된 문자열 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"