출처: 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)
결과
'CS기초 > 코딩테스트' 카테고리의 다른 글
LeetCode #424 (0) | 2022.12.21 |
---|---|
LeetCode 20 (Easy) Valid Parentheses (0) | 2021.03.23 |
LeetCode 232 (Easy) Implement Queue using Stacks (0) | 2021.03.23 |
이것이 취업을 위한 코딩테스트다 15장. 이진탐색 문제 (0) | 2021.03.11 |
LeetCode 35 (Easy) Search Insert Position (0) | 2021.03.11 |