题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个字符串,现在要求删除其中所有相邻是重复的字符,如果删除后会产生新的相邻重复字符,则继续删除。求最终处理后的字符串。

思路分享

  • 只要知道了 Python 的列表可以方便的加元素(append),弹出末尾元素(pop),以及可以很方便地组合列表元素(join),本题就能轻松解决。

  • 以及 python 中有种有意思的设计,就是对于各种类型,有内置的 __bool__ 函数,可以当作判断该变量内部是否有内容的方法。比如下面的if stk and stk[-1] == c,第一个条件就是判断列表是否为空,如果为空就是 false,否则有内容的情况下再看最后一个元素。

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
class Solution:
def removeDuplicates(self, s: str) -> str:
stk = list()
for c in s:
if stk and stk[-1] == c:
stk.pop()
else:
stk.append(c)

return "".join(stk)