介绍
小编给大家分享一下如何使用Python实现一个栈判断括号是否平衡,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!
栈(栈)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(上)。举个例子,栈就想一摞洗干净的盘子,你每次取一个新盘子,都是放在这一摞盘子的最上的头,当你往里面添加盘子的时候,也是放在最上面,处在底部的盘子,你可能永远也用不到。栈的最常见操作,有如下两个:
推(a), #,压入,将一个压入的栈中 pop(), #,弹出,将栈的最后一个元素弹出
可是使用Python的列表数据结构,来模拟栈的操作,使用附加来模拟推,使用列表的流行来模拟栈的流行,但是这样做有一个弊端,那就是列表原本自带的操作方法同样能够使用,可能会造成混乱。
栈的实现下面就通过借助Python的列的表,来自定义一个栈类:
class 堆栈(对象): “““才能使用数组实现一个栈“““ def 才能__init__(自我): ,,,self.data =, [] def 才能推动(自我,,num): ,,,“““压栈操作“““ ,,,self.data.append (num) def 才能;流行(自我): ,,,“““返回从栈中弹出的元素,,当栈为空的时候,,抛出IndexError"““ ,,,return self.data.pop () def 才能,peek(自我): ,,,“““查看当前栈顶的元素,,当栈为空的时候,,抛出IndexError"““ ,,,return self.data [1] def 才能__len__(自我): ,,,“““返回栈的长度,,调用len (obj)时会自动调用obj对象的__len__方法“,“ ,,,return len (self.data) def 才能isEmpty(自我): ,,,“““判断栈是否为空,““ ,,,return True if len (self.data)==0, else 错误的 def 才能清楚(自己): ,,,“““清空栈“““ ,,,self.data =, [] def 才能__repr__(自我): ,,,“““当前对象的表现形式,,在终点直接键入对象时会调用“““ ,,,return & # 39; Stack_& # 39;, +, str (self.data) def 才能__str__(自我): ,,,“““当前对象的字符串表示,,使用打印(obj)时会调用“““ ,,,return & # 39; Stack_& # 39;, +, str (self.data)
以上代码实现了一个简单的基于列表的栈。
栈的应用栈应用的一个很典型的例子,就是检查括号是否匹配。例如:每一个开始的[后面,都应该跟着一个位置正确的],并且每一个(后面,也应该跟着一个位置正确的结束的)。
(…)……(…) (…)……(… )……((…) def isBalance(文本): “““才能栈的应用,检查括号是否平衡“““ result_stack 才能=,堆栈() for 才能小姐:拷贝文本: ,,,if 小姐:[& # 39;{拷贝& # 39;,& # 39;[& # 39;,& # 39;(& # 39;]: ,,,,,result_stack.push(我) ,,,elif 小姐:拷贝(& # 39;}& # 39;,& # 39;]& # 39;,,& # 39;)& # 39;]: ,,,,,#,遇到结束括号的情况 ,,,,,if result_stack.isEmpty (): ,,,,,,,#,如果当前栈为空,,不匹配,返回错误的 ,,,,,,,return 错误的 ,,,,,chFromStack =, result_stack.pop () ,,,,,if not ((==chFromStack & # 39;{& # 39;,以及小姐:==,& # 39;}& # 39;,) ,,,,,,,,,趁机(chFromStack ==, & # 39;[& # 39;,以及小姐:==,& # 39;]& # 39;) ,,,,,,,,,趁机(chFromStack ==, & # 39;(& # 39;,以及小姐:==,& # 39;)& # 39;)): ,,,,,,,#,如果不满足匹配条件,,则返回错误的 ,,,,,,,return 错误的 #才能,遍历结束后,,如果结果栈为空,,则代表括号匹配,,栈不为空,,括号不匹配 return 才能;result_stack.isEmpty ()
<强>补充:Python中的栈强>
在Python中,个人理解为栈可以用列表来代替
服从费罗:第一个在去年
其中入栈为(利用附加函数)
stack =, [] stack.append (& lt; item>)
出栈为(利用流行函数)
stack.pop (1), # stack.pop()也可
服从FIFO:先进先出
入栈为:
stack =, [] stack.append (& lt; item>)
出栈为:
stack.pop (0)
看完了这篇文章,相信你对“如何使用Python实现一个栈判断括号是否平衡”有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!