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