有效的括号
Valid Parentheses
本机进度仅保存在当前浏览器
题目描述
给定一个只包括 (、)、{、}、[、] 的字符串 s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合,且必须以正确的顺序闭合。
示例:s = "()[]{}" 有效;s = "([)]" 无效。
解题思路
- 括号匹配的"后进先出"结构天然对应栈:遇到左括号入栈,遇到右括号与栈顶配对。
- 栈顶不匹配或栈已空却遇到右括号,立即判无效。
- 遍历结束后栈必须为空,否则还有未闭合的左括号。
参考实现
查看参考实现Python · 建议先自行作答
def isValid(s):
# 右括号 -> 对应左括号 的配对表
pairs = {')': '(', ']': '[', '}': '{'}
stack = []
for ch in s:
if ch in pairs:
if not stack or stack.pop() != pairs[ch]:
return False
else:
stack.append(ch)
return not stack