前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用栈判断是否匹配

用栈判断是否匹配

作者头像
算法与编程之美
发布2023-08-22 14:36:08
1750
发布2023-08-22 14:36:08
举报
文章被收录于专栏:算法与编程之美

1 问题

写代码的时候用到的括号都是成双成对的出现,并且大小也相同。在集成编辑环境中,IDE就会为我们自己动检查括号是否匹配。那么为了避免在报错,如何判断是否有无括号不匹配?

2 方法

利用栈来实现这种功能。当遇见一个左括号,就表示入栈,遇见一个右括号就表示出栈。出栈后的左括号,与刚遇见的右括号进行匹配,如类型相同则匹配成功,反之则报错。

代码清单 1

class SqStack: def __init__(self): self.data = [] def empty(self): if len(self.data) == 0: return True return False def push(self,e): self.data.append(e) def pop(self): assert not self.empty() return self.data.pop() def gettop(self): assert not self.empty() return self.data[-1]stack = SqStack()def isMatch(str): st = SqStack() i = 0 while i <len(str): e = str[i] if e =='(' or e =='[' or e == '{': st.push(e) else: if e == ')': if st.empty() or st.gettop()!='(': return False st.pop() if e == ']': if st.empty() or st.gettop()!='[': return False st.pop() if e == '}': if st.empty() or st.gettop()!='{': return False st.pop() i+=1 return st.empty()str=input('请输入:')if isMatch(str): print('True')else: print('False')

3 结语

针对用栈来判断括号是否匹配的问题,提出栈的基本用法的方法,通过运用进栈方法、出栈方法、判断栈是否为空方法以及遍历方法实验,证明该方法是有效的,但本文的方法较复杂,内容较多。未来可以在此基础上优化判断是否匹配方法。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档