面试真题:删除字符串中出现次数 >= 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