题目
2.题解与分析
这也是一道关于栈的题,都是依靠栈的特性
看到这道题的时候我在想,要不要用一个栈加上hash表来完成,要不要多次递归来执行,但一直没找到递归退出条件,
最后发现我想多了,这道和上一道括号匹配一样,也是判断当前遍历到底元素是否等于栈顶元素,不等则添加,相等则弹栈。
func removeDuplicates(s string) string {
stack := []byte{}
var v byte
for _,vv:=range s{
v = byte(vv)
// 如果栈为空, 或最后一个元素不等于s遍历的元素
if len(stack)==0||stack[len(stack)-1]!=v{
stack = append(stack, v)
}else{
stack = stack[:len(stack)-1]
}
}
return string(stack)
}