CS기초/코딩테스트
LeetCode 1209 (Easy) Remove All Adjacent Duplicates in String II
오늘의 나1
2021. 3. 23. 01:06
출처: leetcode.com/problems/remove-all-adjacent-duplicates-in-string-ii/
문제
한글 번역은 아래 더보기를 클릭해주세요.
풀이
class Solution:
def removeDuplicates(self, s: str, k: int) -> str:
# 문자열의 길이가 k보다 작은 경우, k만큼 중복되는 문자는 없으므로 바로 반환
if len(s) < k:
return s
stack = []
dupStr = ''
dupCnt = 0
# 중복이 있는 지 검사하고
# 중복된 문자열을 삭제
for c in s:
stack.append(c)
# 문자열이 다르면 dupCtn 1로 리셋
if (dupStr != c):
dupCnt = 1
dupStr = c
else:
dupCnt += 1
# dupCnt가 k인 경우 pop하여 삭제
if dupCnt == k:
for _ in itertools.repeat(None, k):
stack.pop()
result = ''.join(stack)
if result == s: # 검사결과 중복이 없으면 s 반환
return s
else: # 검사결과 중복이 있었으면 다시 검사
return self.removeDuplicates(result, k)
결과