1047. 删除字符串中的所有相邻重复项

解题思路

  1. 迭代字符串 s 并维护一个栈;

    • 如果当前栈是空的或者栈顶元素与当前元素不同,则将当前字符放入栈中;
    • 如果当前的字符和栈顶字符相同,则出栈栈顶元素;
  2. 迭代字符串完毕,返回栈内的元素即可;

复杂度

  1. 时间复杂度:O(n),其中 n 是字符串的长度,只需要遍历该字符串一次;

  2. 空间复杂度:O(1)

代码实现

var removeDuplicates = function (s) {
    let stack = [];

    for (const x of s) {
        let len = stack.length;
        if (len && stack[len - 1] === x) {
            stack.pop();
            continue;
        }
        stack.push(x);
    }

    return stack.join("");
};
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1.
    1. 1.1. 解题思路
    2. 1.2. 复杂度
    3. 1.3. 代码实现