本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
每日算法:删除字符串中的所有相邻重复项
mycodes · 282浏览 · 发布于2021-08-26 +关注

给出由小写字母组成的字符串 S ,重复项删除操作 会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。


给出由小写字母组成的字符串 S ,重复项删除操作 会选择两个相邻且相同的字母,并删除它们。

在 S 上反复执行重复项删除操作,直到无法继续删除。

在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

示例:

输入:"abbaca" 
输出:"ca" 
解释: 
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。

    提示:

    1. <= S.length <= 20000

    2. S 仅由小写英文字母组成。

    解法:利用栈

    解题思路: 遍历字符串,依次入栈,入栈时判断与栈头元素是否一致,如果一致,即这两个元素相同相邻,则需要将栈头元素出栈,并且当前元素也无需入栈

    解题步骤: 遍历字符串,取出栈头字符,判断当前字符与栈头字符是否一致

    • 不一致,栈头字符进栈,当前字符进栈

    • 一致,即栈头字符与当前字符相同相邻,都不需要进栈,直接进入下次遍历即可

    遍历完成后,返回栈中字符串

    代码实现:

    const removeDuplicates = function(S) { 
        let stack = [] 
        for(c of S) { 
            let prev = stack.pop() 
            if(prev !== c) { 
                stack.push(prev) 
                stack.push(c) 
            } 
        } 
        return stack.join('') 
    };

      • 时间复杂度:O(n)

      • 空间复杂度:O(n


      相关推荐

      RN开发环境的npm私库本地debug调试

      manongba · 698浏览 · 2019-05-09 17:03:46
      你不知道的浏览器渲染原理

      追忆似水年华 · 1372浏览 · 2019-05-09 22:47:56
      基于iview的router常用控制方式

      追忆似水年华 · 998浏览 · 2019-06-03 10:39:21
      编程小知识之 JavaScript 文件读取

      manongba · 717浏览 · 2019-06-10 09:16:16
      10个省时间的 PyCharm 技巧 赶快收藏!

      · 702浏览 · 2019-06-10 09:32:01
      加载中

      0评论

      评论
      我从事编程工作,现在在一家网络公司上班,偶尔也是发布博客,逛论坛等,希望可以在这里交到志同道合的朋友。
      分类专栏
      小鸟云服务器
      扫码进入手机网页