JZX轻语:简
LeetCode 1209 - 删除字符串中的所有相邻重复项II
发表于2024年07月07日
从左往右遍历字符串,使用一个栈来维护已遍历字符的连续计数,如果当前字符与栈顶字符相同,则将计数加一,否则将当前字符入栈,并将栈顶计数计为1
。如果栈顶字符计数超过了k
,则需要出栈。最后拼接栈中尚存的字符即可。
class Solution:
def removeDuplicates(self, s: str, k: int) -> str:
stack = []
for ch in s:
if stack and stack[-1][0] == ch:
stack[-1][1] += 1
else:
stack.append([ch, 1])
if stack[-1][1] == k:
stack.pop()
# 组装结果
ans_list = []
for ch, cnt in stack:
ans_list.append(ch * cnt)
return ''.join(ans_list)