"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