You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Stack(栈)实现()、[]、{}三类括号的平衡与嵌套正确性校验

栈实现多类型括号校验函数

核心逻辑说明

  • 先定义右括号到对应左括号的映射字典,无需编写多分支判断即可快速匹配括号对应关系,大幅减少冗余代码
  • 用Python列表模拟栈结构,左括号直接入栈,遇到右括号就弹出栈顶左括号校验匹配关系
  • 遍历过程中只要出现匹配失败、栈为空时仍遇到右括号的情况,直接返回False
  • 遍历结束后必须栈为空才算全部匹配完成,否则说明存在未匹配的多余左括号

完整实现代码

def check_parentheses(s: str) -> bool:
    # 右括号到对应左括号的映射表
    bracket_map = {')': '(', ']': '[', '}': '{'}
    stack = []
    for char in s:
        # 跳过输入中的空格,适配带空格的测试用例
        if char.isspace():
            continue
        # 左括号直接入栈
        if char in bracket_map.values():
            stack.append(char)
        # 右括号做匹配校验
        elif char in bracket_map:
            # 栈为空说明没有对应的左括号匹配,直接返回不合法
            if not stack:
                return False
            # 弹出栈顶左括号,对比是否和当前右括号匹配
            if stack.pop() != bracket_map[char]:
                return False
    # 遍历结束后栈为空才是完全合法
    return len(stack) == 0

测试用例验证

你提供的所有测试用例运行后均会输出True:

print(check_parentheses("()"))
print(check_parentheses("(()())"))
print(not check_parentheses("(()))"))  # Unbalanced
print(not check_parentheses("((())"))  # Unbalanced
print(check_parentheses("({})")) #fick fel här
print(not check_parentheses("({)}"))  # Bad nesting
print(check_parentheses("({} [()] ({}))"))
print(not check_parentheses("({} [() ({)})"))  # Unbalanced and bad nesting

内容的提问来源于stack exchange,提问作者Osmani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:36:07