打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python|用“栈”的方法完成括号匹配
问题描述
使用“栈”的方法完成括号匹配(给定一个字符串,判断字符串里的括号是否有效。)
正确匹配情况:(1)[](){} ;(2)([{}])
解决方案
先遍历字符串把三对括号提出来,再利用‘栈’把左括号一个个的放入其中并且遍历到右括号立即进行匹配。匹配成功后删除‘栈’中的左括号并继续,匹配失败则返回‘False’.最后返回栈的长度,避免出现奇数个括号的错误。
注意:不可以把左括号全部放入一个‘栈’,右括号全部放入另一个‘栈’。然后进行匹配。
例如:“([{}])”和“([}{])”左右括号分别放入两个栈的情况都是“([{”和“}])”,但是前一个是正确的,后一个是错误的。
实现代码:
def zhan(s):
#新建一个列表,存放括号,出掉非括号的字符
q = []
for i in s:
if i == '(' or i == ')' or i == '[' or i == ']' or i == '{' or i == '}' :
q.append(i)
#利用栈匹配括号
l = []
for i in q:
if i == '(' or i == '[' or i == '{': l.append(i)
elif i == ')' and l[-1] == '(': l.pop()
elif i == ']' and l[-1] == '[': l.pop()
elif i == '}' and l[-1] == '{': l.pop()
return len(l) == 0
s = "题中字符串"
result = zhan(s)
print(result)
END主       编   |   王文星
责       编   |   周茂林
where2go 团队
微信号:算法与编程之美
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
华为2019年暑期实习生在线笔试(原创)
第四关奖励(0~4关笔记)
C语言中的预处理基本知识
python从步兵到骑兵[三]
Bash 基础知识系列 #7:If Else 语句 | Linux 中国
[Python]C#程序员初学Python
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服