Python实现字符串括号闭合性校验算法

竹里
竹里
发布时间:2026-10-14 | 2人浏览过
原创

本文介绍如何使用Python判断字符串中括号是否闭合。核心思路是利用列表模拟栈结构:遇到左括号入栈,右括号则与栈顶元素匹配并出栈。通过遍历字符串并检查最终栈是否为空,可验证括号对称性。文章提供完整代码示例,涵盖正确闭合、不对称及多余括号三种情况的处理逻辑。

Python实现字符串括号闭合性校验算法

前言

这是一道经典的编程面试题,要求判断给定字符串中的括号是否完全闭合。例如,字符串 `{{()}}` 是一个合法的闭合字符串。

然而,如 `{{()}]}` 这样的字符串,其中包含不对称的括号组合 `([)]`,则被视为不闭合。

Python判断括号闭合的方法

使用Python进行闭合性判断

解决该问题的基本思路如下:

首先,将遇到的左括号依次存入一个列表(模拟栈结构)。当遇到右括号时,从列表中弹出最后一个添加的左括号。

接着,对比弹出的左括号与当前的右括号是否匹配。如果匹配,则继续处理后续字符;如果不匹配,则判定为不闭合。

遍历结束后,检查列表是否为空。如果列表为空,说明所有左括号都已找到对应的右括号,即字符串闭合;否则存在未匹配的左括号。

此外,还需要考虑右括号多余的情况,即在遍历过程中若栈已空仍遇到右括号,直接判定为不闭合。

Python代码实现与测试

具体实现代码如下


def is_str_close(a):
  '''
  遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
  寻找有志同道合的小伙伴,互帮互助,群 里还有不错的视频学习教程和PDF电子书!
  判断括号是否闭合
  '''
  b = []
  flag = True
  for i in a:
    if i == "{" or i == "[" or i == "(":
      # 左边的括号加进去
      b.append(i)
    elif i == "}":
      # 遇到右边括号}弹出最后面的一个{
      if len(b) == 0 or b.pop() != "{":
        return False
    elif i == "]":
      # 遇到右边括号]弹出最后面的一个[
      if len(b) == 0 or b.pop() != "[":
        return False
    elif i == ")":
      # 遇到右边括号)弹出最后面的一个(
      if len(b) == 0 or b.pop() != "(":
        return False
  # 判断最后列表b里面的左边括号是否全部被弹出
  if len(b) != 0:
    flag = False
  return flag

if __name__ == '__main__':
  a = "{[{()}]()}"
  print(is_str_close(a))
  b = "({[{()}]()}"
  print(is_str_close(b))
  c = "{[{()}]()}]"
  print(is_str_close(c))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表