题目
给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
在 S 上反复执行重复项删除操作,直到无法继续删除。
在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
代码
暴力解法
class Solution:
def removeDuplicates(self, s: str) -> str:
# 单个字母直接输出
if len(s)==1:
return s
res=[]
# 删除S中的相邻重复项
def f(S):
flag=0
if S!='':
pre=S[0] # 指向当前遍历字母的前一个字母
for alpha in S[1:]:
if pre==alpha:
S=S.replace(pre+alpha,'')
flag=1
else:
pre=alpha
if flag==0:
res.append(S)
else:
f(S)
f(s)
return res[0]
栈运用
class Solution:
def removeDuplicates(self, s: str) -> str:
# 单个字母直接输出
if len(s)==1:
return s
stack=[]
for alpha in s:
if stack==[]:
stack.append(alpha)
else:
if alpha==stack[-1]:
stack.pop()
else:
stack.append(alpha)
return ''.join(stack)