题目浅析

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

  • 简单地说,就是给一个字符串,将字符串最左边的相邻的字符对移除,知道字符串内没有相邻的字符。(按字母表循环,顺次和逆次都算相邻)

思路分享

  • 【Leetcode Daily】1047删除字符串中的所有相邻重复项 的基础上,不要两个字符相同,而是相邻,可以抽象为两个字符的数值差(ASCII)为 1 或 25.

  • 当然,想不到 a 和 z 的数值差为 25 的话,多写一点条件判断两个字符一个是 a 另一个是 z 也是可行的。

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

  • 参考题解
1
2
3
4
5
6
7
8
9
10
class Solution:
def resultingString(self, s: str) -> str:
stk = list()
for c in s:
# if stk and (abs(ord(c)-ord(stk[-1]))==1 or (c == 'z' and stk[-1] == 'a') or (c == 'a' and stk[-1] == 'z')):
if stk and (abs(ord(c)-ord(stk[-1]))==1 or abs(ord(c)-ord(stk[-1]))==25):
stk.pop()
else:
stk.append(c)
return "".join(stk)