每天一道LeetCode-有效的括号

161 阅读1分钟

人生中刷的第五道算法题了

题目要求:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。

我的思路:我的思路没做出来,看了解题视频————先入后出,使用栈,后一个与栈顶匹配,配对则出栈,不配则进栈

     /**
     * @param {string} s
     * @return {boolean}
     */
        var isValid = function (s) {
            if (s.length % 2 !== 0) return false

            let arr = []

            const reg = new Map()

            reg.set(")", "(")
            reg.set("}", "{")
            reg.set("]", "[")

            for (let i = 0; i < s.length; i++) {

                if (!reg.get(s[i])) {
                    arr.push(s[i])
                    continue
                }

                if (reg.get(s[i]) && reg.get(s[i]) !== arr[arr.length - 1]) {
                    arr.push(s[i])
                } else {
                    arr.pop()
                }
            }

            return arr.length === 0
        };