📌  相关文章
📜  使用堆栈从字符串删除所有重复的相邻字符(1)

📅  最后修改于: 2023-12-03 14:49:54.138000             🧑  作者: Mango

使用堆栈从字符串删除所有重复的相邻字符

在编程中,有时需要将字符串中的重复相邻字符删除,并仅保留一个字符。可以使用堆栈来实现这个操作,遍历字符串,将每个字符与堆栈顶部的元素进行比较,如果相同,则弹出堆栈,否则将该字符压入堆栈。最后,将堆栈中的字符组合成一个新的字符串并返回。

实现思路

首先,创建一个空堆栈来存储字符。遍历字符串中的每个字符,将其与堆栈顶部元素进行比较。如果当前字符与堆栈顶部元素一致,则弹出堆栈;否则,将当前字符压入堆栈。最后,将堆栈中的字符组合成一个新的字符串并返回。

代码实现
def remove_adjacent_duplicates(s: str) -> str:
    stack = []
    for c in s:
        if stack and c == stack[-1]:
            stack.pop()
        else:
            stack.append(c)
    return ''.join(stack)
示例
s = "abbaca"
print(remove_adjacent_duplicates(s))  # 输出 'ca'
总结

使用堆栈可以快速并且易于实现地删除字符串中的相邻重复字符。以上代码具有普适性,可以用于任何需要删除相邻重复字符的问题。