leetcode 20 有效的括号

90 阅读1分钟

思路:利用栈的思想,遇到左括号,押入栈中,遇到右括号,将栈顶元素弹出并与当前括号比较是否匹配,如果不匹配直接返回false,最后判断栈是否为空,空则有效,不空着说明右括号少了

注意: 在遇到右括号时,如果栈为空,则表示先遍历到右括号,直接返回false

var isValid = function(s) {
    let stack = []
    for (let i = 0; i < s.length; i++) {
        switch (s[i]) {
            case '(':
            case '[':
            case '{':
                stack.push(s[i])
                break;
            case ')':
            case ']':
            case '}':
                if (!stack.length) return false
                let cur = stack.pop()
                if (cur === '(' && s[i] !== ')') return false
                if (cur === '[' && s[i] !== ']') return false
                if (cur === '{' && s[i] !== '}') return false
                break;
        }
    }
    return stack.length === 0
};