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

2020-04-28  本文已影响0人  泰然自若_750f

题目:

输入:"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
上一篇下一篇

猜你喜欢

热点阅读