删除字符串中的所有相邻重复项
1.解法
用栈来实现。
先按顺序让字符进栈
-
如果当前进栈的字符和栈顶字符相同,则弹出栈顶字符并且该字符也不进栈。
-
如果不相同,则进栈
def removeDuplicates(s):
stack = []
for i in s:
# 如果stack不为空
if stack:
# 如果进栈的字符i和栈顶元素stack[-1]相同
if i == stack[-1]:
stack.pop()
else: # 如果不同
stack.append(i)
# 如果stack为空
else:
stack.append(i)
return ''.join(stack)
2.总结
算法
- 匹配问题都是栈的强项
- 注意在判断栈顶元素和进栈元素是否相等时,需要先判断栈是否为空。
- 如果单纯用栈来实现的话,最后剩下的元素还需要反转一下,才是最后正确的答案。但是因为python使用比较灵活,因此可以不用执行这步。