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)

闪念标签:LC

题目链接:https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string-ii/