1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode)
可以使用栈来解决这个问题,具体思路如下:
-
遍历字符串
s
,使用一个栈stack
来存储字符。 -
若
stack
不为空且栈顶元素等于当前字符,则弹出栈顶元素(表示删除这对重复字符)。 -
否则,将当前字符压入栈中。
-
最终,栈中剩下的字符就是处理后的结果,按顺序拼接成字符串返回。
Python 代码实现如下:
def removeDuplicates(s: str) -> str:
stack = []
for char in s:
if stack and stack[-1] == char:
stack.pop() # 移除重复的字符
else:
stack.append(char) # 添加新字符
return ''.join(stack)
# 示例测试
print(removeDuplicates("abbaca")) # 输出 "ca"
复杂度分析:
-
时间复杂度: O(n),其中 nn 是字符串
s
的长度,每个字符最多入栈和出栈一次。 -
空间复杂度: O(n)(最坏情况下,字符串无可删除的字符)。
这个方法高效且简单,可以确保删除所有相邻的重复字符并得到唯一的最终字符串。