前置条件
给出一个由小写字母组成的字符串,对其删除两个相邻重复的字母,递归删除直到没有相邻重复项,类似消消乐
- 栈
def removeDuplicates(str:s)-> str:
stack = []
for i in s:
if stack and stack[-1] == i:
stack.pop()
else:
stack.append(i)
return ''.join(stack)
- 快慢指针
复习:快慢指针的本质
慢指针指向满足新数组中下一个满足条件的元素 即 相邻不重复的字母
快指针寻找新数组中的元素
慢指针确定好更新的位置 快指针把新的元素交给慢指针
def removeDuplicates(str:s)-> str:
result = list(s)
slow = fast = 0
while fast < len(s):
result[slow] = result[fast]
if slow > 0 and result[slow] == result[slow-1]:
slow -= 1
else:
slow += 1
fast += 1
reyurn ''.join(result[:slow])