LC1047. 删除字符串中的所有相邻重复项 (百度面试题)
题目:给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
例子: 输入:"abbacabb" 输出:"ca"
分析:① 删掉回文的字符串 × 反例:abbcca
② 栈 每次遍历的时候与栈中最后一个比较,相同则pop
PS:列表转为字符串 如 list_s = ['a','b','c'] 可以 s = "".join(list_s)
代码:
# 用栈实现
'''
入栈: st.append(a)
出栈: st.pop(-1)
'''
def reremoveDuplicates(s):
c = []
n = len(s)
for i in range(n):
if c and c[-1] == s[i]:
c.pop(-1)
else:
c.append(s[i])
return "".join(c)