题目

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

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

站点统计

  • 文章总数:315 篇
  • 分类总数:20 个
  • 标签总数:193 个
  • 运行天数:1156 天
  • 访问总数:40515 人次

浙公网安备33011302000604

辽ICP备20003309号