"aaca"=>"ca" 利用栈解决">
美文网首页
面试真题:删除字符串中出现次数 >= 2 次的相邻字符

面试真题:删除字符串中出现次数 >= 2 次的相邻字符

作者: 泰然自若_750f | 来源:发表于2020-04-28 12:43 被阅读0次

    题目:

    输入:"abbbaca"
    输出:"ca"
    解释:"abbbaca" => "aaca"=>"ca"

    利用栈解决

    function remove(str,k){
        var stack=[],
            //移除的 例如 移除了 ee 缓存 最后一个字母 e,
            //如果下一个字符也是e,也会移除,如果不是则被置空
            tag='';
        for(var s of str)
        { 
            if(tag===s)
            {
                continue;
            }
            var pop=stack.pop();
            if(!pop || pop[0]!=s)
            {
                 pop?stack.push(pop):'';
                 stack.push(s);
                 tag=''
            }
            //还小于重复项
            else if(pop && pop.length<k-1){
                 //字符串相加入栈
                 stack.push(s+pop);
                 tag=''
            }
            else{
                //删除后缓存tag
                tag=pop?pop[0]:'';
    
            }
        }
        return stack.join('');
    
    }
    remove('abbbaca',2);// ca
    remove('abbbbaaacas',3); //cas
    

    相关文章

      网友评论

          本文标题:面试真题:删除字符串中出现次数 >= 2 次的相邻字符

          本文链接:https://www.haomeiwen.com/subject/vxjvwhtx.html