20. 有效的括号

题目

20. 有效的括号(简单)

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

有效字符串需满足:

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

示例 1:

输入:

()

输出:

true

示例 2:

输入:

()[]{}

输出:

true

示例 3:

输入:

(]

输出:

false

示例 4:

输入:

([])

输出:

true

示例 5:

输入:

([)]

输出:

false

提示:

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

思路

栈匹配:长度为奇数直接排除;遇左括号入栈,遇右括号检查栈顶是否为对应的左括号(栈空或不匹配则无效);扫描结束后栈恰好为空才有效。

代码

class Solution:
    def isValid(self, s: str) -> bool:
        if len(s) % 2 == 1:
            return False
        pairs = {
            ')': '(',
            '}': '{',
            ']': '['
        }
        l = list()
        for ch in s:
            if ch in pairs:
                if not l or l[-1] != pairs[ch]:
                    return False
                l.pop()
            else:
                l.append(ch)
        return not l

20. 有效的括号
https://mingsm17518.github.io/2026/09/14/刷题笔记/Hot100/20. 有效的括号/
作者
Ming
发布于
2026年9月14日
更新于
2026年9月14日
许可协议