【力扣】20有效的括号

227 阅读1分钟

题目描述

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。力扣链接

有效字符串需满足:
    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。

分析

大多数的题目解题思路都是类似的,首先要考虑边界和特殊情况

    var len = s.length;
    if(len === 0) {
        // 空字符串
        return true
    }
    if(!len % 2) {
        // 奇数字符串
        return false
    }

其次运用堆栈的原理,如果遇到左括号就往栈里推元素,如果遇到右括号就判断当前栈顶元素,如果形成闭环就把栈顶元素删除,如果不是闭环则返回false

var stack = []
for(var i = 0; i < len; i++) {
    var item = s[i]
    if((/([\(]|[\{]|[\[])/i).test(item)) {
        stack.push(item)
    }
    else if(item == ')') {
        if(stack.pop() !== '(') {
            return false 
        }
    }
    else if(item == '}') {
        if(stack.pop() !== '{') {
            return false 
        }
    }
    else if(item == ']') {
        if(stack.pop() !== '[') {
            return false 
        }
    }
}
var result = stack.length === 0
return result

哎呦我这可怜的数据。。。 下课