美文网首页
1【简单】删除字符串中的所有相邻重复项

1【简单】删除字符串中的所有相邻重复项

作者: 玲儿珑 | 来源:发表于2021-03-10 18:34 被阅读0次

【题目】给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在S上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
【示例】
输入:“abbaca”
输出:“ca”
【提示】
1、1<=S.length<=20000
2、S仅由小写英文字母组成
【答案】

function quchong(arr) {
  var temp = ''
  for (let i = 0; i < arr.length; i++) {
    if (temp == arr[i]) {
      arr.splice(i-1, 2)
      quchong(arr)
    } else {
      temp = arr[i]
    }
  }
  return arr
}
function func_quchong(s) {
  var arr = s.split('')
  return quchong(arr.join(''))
}
func_quchong('abbaca')

【官方答案】

var removeDuplicates = function(S) {
    // 创建临时栈
    let stock = [];
    // 遍历字符串
    for(let item of S){
        // 相邻两者相等
        if(stock[stock.length - 1] === item){
            // 弹出栈顶
            stock.pop();
        }else{
            // 压入栈
            stock.push(item);
        }
    }
    return stock.join("");
};
时间复杂度:O(n)O(n),遍历了一次 S 字符串。
空间复杂度:O(n)O(n),n 为存储字符的临时栈所需空间。

相关文章

网友评论

      本文标题:1【简单】删除字符串中的所有相邻重复项

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