【Leetcode算法题解】20. 有效的括号

81 阅读1分钟

文章目录

力扣第20题目:有效的括号

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

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

难度:简单

题目例子

在这里插入图片描述

提示

提示:

1 <= s.length <= 104 s 仅由括号 ‘()[]{}’ 组成

题解

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    if(s.length % 2 === 1) return false;
    const stack = [];
    for(var i = 0 ; i < s.length;i+=1){
        const c = s[i];
        if(c === '(' || c === '{' || c === "["){
            stack.push(c)
        }else {
            const t = stack[stack.length - 1]
            if(
                (t === "(" && c === ')') ||
                (t === "{" && c === '}') ||
                (t === "[" && c === ']')
            ){
                stack.pop();
            }else {
                return false
            }
        }
    }
    return stack.length === 0
};

运行结果

在这里插入图片描述

时间复杂度和空间复杂度

时间复杂度:O(n)
空间复杂度:O(n)