题目

删除字符串中的所有相邻重复项

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)
}
分类: 算法

0 条评论

发表评论

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注

站点统计

  • 文章总数:304 篇
  • 分类总数:19 个
  • 标签总数:189 个
  • 运行天数:864 天
  • 访问总数:475046 人次
ICP备案号: 辽ICP备20003309号