LeetCode 0020.有效的括号:栈匹配

【LetMeFly】20.有效的括号:栈匹配

力扣题目链接:https://leetcode.cn/problems/valid-parentheses/

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 1:
**输入:**s = "()"

**输出:**true

示例 2:
**输入:**s = "()\[\]{}"

**输出:**true

示例 3:
**输入:**s = "(]"

**输出:**false

示例 4:
**输入:**s = "(\[\])"

**输出:**true

示例 5:
**输入:**s = "()"

**输出:**false

提示:

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

解题方法:栈

遍历字符串,遇到左括号则入栈,遇到右括号则看栈顶元素与之是否匹配(匹配则出栈不匹配直接返回False),若遍历完栈为空才返回True。

  • 时间复杂度 O ( l e n ( s ) ) O(len(s)) O(len(s))
  • 空间复杂度 O ( l e n ( s ) ) O(len(s)) O(len(s))

也可以给栈中插入一个非括号哨兵字符来避免判断栈中是否有元素。

AC代码

C++
cpp 复制代码
/*
 * @LastEditTime: 2026-10-01 09:22:00
 */
class Solution {
public:
    bool isValid(const string& s) {
        stack<char> st;
        for (char c : s) {
            if (c == '(' || c == '[' || c == '{') {
                st.push(c);
            } else if (st.empty()) {
                return false;
            } else {
                char a = st.top();
                st.pop();
                if (!(a == '(' && c == ')' || a == '[' && c == ']' || a == '{' && c == '}')) {
                    return false;
                }
            }
        }
        return st.empty();
    }
};
Python
python 复制代码
class Solution:
    def isValid(self, s: str) -> bool:
        st = ['']
        pair = {
            '{': '}',
            '(': ')',
            '[': ']'
        }
        for c in s:
            if c in pair: st.append(c)
            elif pair.get(st.pop(), '') != c: return False
        return len(st) == 1

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关推荐
薛定e的猫咪1 小时前
(ICLR 2026)DF-META:面向 FJSP 的无导数元学习实例自适应调度
人工智能·深度学习·学习·算法·机器学习
java_nnnn3 小时前
LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java
java·开发语言·leetcode
小羊没烦恼!3 小时前
异步编程:线程概述及使用
java·开发语言·mysql·算法·c#
wanderist.3 小时前
202609CSP认证P3
算法
云淡风轻~窗明几净4 小时前
角谷猜想最接近严格证明的测试 Version1.1.1
人工智能·算法·机器学习·图论
lvwangshu4 小时前
P17723 [SCP-S 2026] 函数 / func 题解
题解·双指针·技巧·性质题·思维好题·推导题
机器学习之心4 小时前
PINN × SVM × NSGA-II × 熵权TOPSIS:一套跑通「建模—优化—决策」的多目标优化框架
算法·机器学习·支持向量机
别动我齐刘海5 小时前
机器人 C++ / 系统联调补强2——异常处理、Protobuf
linux·c++·人工智能·学习·算法·机器学习·机器人
文丑颜不良啊5 小时前
LeetCode276~300题目解析
java·leetcode
荆棘鸟智能5 小时前
短历时洪水预报算法实践:水文模型与 LightGBM 残差订正融合
人工智能·算法·机器人