1249.移除无效的括号

/**
 * @param {string} s
 * @return {string}
 */
var minRemoveToMakeValid = function (s) {
    // 1.先找出需要移除的括号
    // 2.再逐个移除

    let rightToLeft = {
        ')': '('
    }
    let arr = s.split('')
    let stack = [] // 记录下标而不是记录字符,后面好直接通过下标删除不需要的元素
    for (let i = 0; i < arr.length; i++) {
        let ch = arr[i]
        if (ch !== '(' && ch !== ')') { // 不是括号直接跳过
            continue
        } else {
            // 匹配括号是否成一对,stack剩下的就是多余的括号
            if (stack.length === 0) {
                stack.push(i)
            } else {
                let index = stack.pop()
                if (arr[index] !== rightToLeft[ch]) {
                    stack.push(index)
                    stack.push(i)
                }
            }
        }
    }

    console.log(stack)
    // 通过下标把多余的括号删掉
    let res = []
    for (let i = 0; i < arr.length; i++) {
        // 不在stack里的
        if (!stack.includes(i)) {
            res.push(arr[i])
        }
    }

    return res.join('')
};

console.log(minRemoveToMakeValid("lee(t(c)o)de)"))