[每日一题][找工作第63天][2025-11-24] Leetcode 20. 有效的括号

题目

20. 有效的括号
给定一个只包括 ‘(‘,’)’,'{‘,’}’,'[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。
     
    示例 1:
    输入:s = “()”
    输出:true
    示例 2:
    输入:s = “()[]{}”
    输出:true
    示例 3:
    输入:s = “(]”
    输出:false
    示例 4:
    输入:s = “([])”
    输出:true
    示例 5:
    输入:s = “([)]”
    输出:false
     
    提示:
  • 1 <= s.length <= 104
  • s 仅由括号 ‘()[]{}’ 组成

我的代码(Python)

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    if (s.length % 2 != 0) {
        return false;
    }
    if (s.length == 0) {
        return true;
    }
    let myStack = [];
    for (const [i, ch] of [...s].entries()) {
        if (ch == '(' || ch == '[' || ch == '{') {
            myStack.push(ch);
            if (s.length - i - 1 < myStack.length) {
                return false;
            }
        } else {
            if (myStack.length == 0) {
                return false;
            }
            switch (ch) {
                case ')':
                    if (myStack[myStack.length - 1] != '(') {
                        return false;
                    }
                    myStack.pop();
                    break;
                case ']':
                    if (myStack[myStack.length - 1] != '[') {
                        return false;
                    }
                    myStack.pop();
                    break;
                case '}':
                    if (myStack[myStack.length - 1] != '{') {
                        return false;
                    }
                    myStack.pop();
                    break;
                default:
                    return false;
                    break;
            }
        }
    }
    return myStack.length == 0;
};

点评

思路很简单,出栈入栈顺序判定。
但是效率不好。
官方的解法是通过做了一个map来优化比较过程,考虑到每一个都是要比较的,确实可以优化很多。


baddif@gmail.com

AI简历优化站

Nonpareil.me:优化简历,助力职场
开源代码

AI求职跟踪器(建设中)

开源代码

主站(建设中)

Nonpareil Me

相关平台

Github Issues / Notion / Blog

1人评论了“[每日一题][找工作第63天][2025-11-24] Leetcode 20. 有效的括号”

回复 ai generator 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部