栈:先进后出
pop()删掉最后一个
push()在首部添加一个
实现原理:
- 使用stack存储最后输出的数据
- 循环str,并一开始就获取stack第一项(第一次为空)
- 如果prev第一项和当前v不相等则代表相邻字符不等则push到数组中
let str = "abbSttSaafffe";
function removeDuplicates(str){
let stack = [];
for(let v of str){
// 删除最后一个
let prev = stack.pop();
// 如果前一个后当前不相等表示相邻两个字符不相等则放进栈中
if(prev != v){
stack.push(prev);
stack.push(v);
}
}
return stack.join('');
}
let noDuplicateStr = removeDuplicates(str);
console.log(noDuplicateStr);