数据结构与算法每日一题——栈(1047. 删除字符串中的所有相邻重复项)

190 阅读1分钟

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

/**
 * @param {string} s
 * @return {string}
 */
var removeDuplicates = function(s) {
    // 思路 拿栈中删除的元素和循环栈中的元素比较 如果相等的话那就把栈中删除了,也不会将循环的元素推入栈
    // 如果不相等的话那就把删除的元素推入栈,也把循环的元素推入栈
    // 举例:第一次删除的元素是空,循环的元素是a,不相等那就把空元素和a都推入栈,再接着把a删除,循环的元素是b,不相等把ab依次推入栈,再接着栈删除的元素是b,循环的元素是b,这样的话b删除了,后面的b也不推入栈。
    let stack = []
    for(let i of s){
        let popElement = stack.pop()
        if(i != popElement){
            stack.push(popElement)
            stack.push(i)
        }
    }
    return stack.join('');
};