Python实现字符串括号闭合性校验算法
本文介绍如何使用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))
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













