python代数式括号有效性检验示例代码
作者:漫漫人生的翠色 发布时间:2022-04-29 04:49:49
标签:python,代数式,括号
思路:
利用栈实现代数式中括号有效行的的检验:
代码:
class mychain(object): #利用链表建立栈,链表为父类
length=0
def __init__(self,value=None,next=None):#创建链表,长度并不包含头部
self.value=value
self.next=next
#mychain.length=mychain.length+1
def append(self,value=None):
while self.next!=None:
self=self.next
self.next=mychain(value)
mychain.length=mychain.length+1 #追加时,链表长度增加
def travle(self):#遍历链表
print(self.value)
if self.next!=None:
self.next.travle()
def drop (self,value):#删除特定值的第一个匹配节点
while self.next!=None:
if self.next.value!=value:
self=self.next
else:
self.next=self.next.next
mychain.length=mychain.length-1 #删除时,链表长度减小
break
def pop(self):#删除未节点
if self.next!=None:#并不删除头结点
while self.next.next!=None:
self=self.next
self.next=None
mychain.length=mychain.length-1#弹出为节点,并减小长度,头结点不弹出
class stock(mychain):#栈类
bottom=None #栈底
top=None#栈顶
n_count=0#计数
def Max(self):#占中最大值
if self.next!=None:
tmp = self.next.value
while self.next.next!=None:
self=self.next
if self.next.value>tmp:
tmp=self.next.value
return tmp
else:
print('栈为空!')
def Min(self):#栈中的最小值
if self.next!=None:
tmp = self.next.value
while self.next.next!=None:
self=self.next
if self.next.value<tmp:
tmp=self.next.value
return tmp
else:
print('栈为空!')
def push(self,value): #压栈
while self.next != None:
self = self.next
self.next = mychain(value)
stock.top=self.next
stock.length=stock.length+1
stock.n_count=stock.n_count+1
def __init__(self,value='',next=None):
self.value=value
self.next=next
stock.bottom=self
stock.top=self
#stock.n_count=stock.n_count+1
#stock.length=stock.length+1
def append(self,value=''):#取消追加函数
print('请使用Push()!')
def pop(self):
if self.next!=None:#并不删除头结点
while self.next.next!=None:
self=self.next
self.next=None
stock.top=self
stock.length=stock.length-1#弹出为节点,并减小长度,头结点不弹出
class solution(object):
def validationofbrackets(self,astr=''):#检验串中的括号合法性
braketsstock=stock()
for i in astr:
if i in ['{','(','[']:
braketsstock.push(i)
else:
if i==')':
if braketsstock.top.value=='(':
braketsstock.pop()
else:
return False
elif i==']':
if braketsstock.top.value=='[':
braketsstock.pop()
else:
return False
elif i=='}':
if braketsstock.top.value=='{':
braketsstock.pop()
else:
return False
else:
pass
print(astr)
print(braketsstock.length)
if braketsstock.length==0:
return True
else:
return False
运行:
bstr='([{((({{}})))}]){{}}{{}{}{}[][]()(123)(((sin5)))}'
f=solution()
print(f.validationofbrackets(bstr))
来源:https://www.cnblogs.com/wjqsdwm/p/13765413.html


猜你喜欢
- “点睛”的广告代码,很牛B,本想从中找出在FireFox下如何实现findText及pasteHTML类似效果的,我看了大半天,楞是没有看出
- 最近用到Python自动发送邮件,主要就是三步,登录邮件、写邮件内容、发送,用到的库是 smtplib 和 email,直接使用pip安装即
- 本文实例讲述了GO语言Defer用法。分享给大家供大家参考。具体分析如下:defer:调用一个被 defer 的函数时在函数刚要返回之前延迟
- 遇到这样一个情况想将变量v转化为[]string类型var v interface{}a := []interface{}{"1&
- 使用使用navicat连接远程linux mysql数据库出现10061未知故障,设置使用ssh连接后出现2013故障本机环境:win10
- 前言动态生成表格是前端开发中非常重要的内容,常常是后端返回数据(大多是json类型),我们前端通过js循环来动态添加,所以这部分内容是十分重
- 按照惯例,年底的淘宝的确是到了“需要改版的时候”。这次新版的淘宝首页上线,乍看并没有多少夺人眼球的地方,但仔细揣摩其中的细节,还是发现了不少
- 目录一、简单文本类型数据二、复杂型表格提取三、图片型表格提取大家好,从PDF中提取信息是办公场景中经常需要用到的操作,也是经常又读者在后台问
- 在学习django的时候,想要实现登录失败后,进行用户锁定,切记录锁定时间,在网上找了很多资料,但是都感觉不是那么靠谱,于是乎,我开始了我的
- 实现效果:实现代码import numpy as npfrom skimage import img_as_floatimport matp
- 一、遇到的问题在向数据库中存入汉字时遇到这样的问题:Cause: java.sql.SQLException: Incorrect stri
- 这篇文章主要介绍了如何基于Python制作有道翻译小工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- Atlassian是一家软件开发商, 2002年创建于澳大利亚悉尼,在旧金山、阿姆斯特丹也有办公室,2011年收入为1亿美元,较2010年增
- Vue3新属性:CSS 中的 v-bind()写在前面:本文主要介绍Vue3中的新增的v-bind()的常用使用方式,主要包括在css,le
- 内容摘要合理使用渐变留白网格布局提高字体应用明确而有效的导航设计漂亮、有用的页脚介绍优秀设计和卓越设计之间的区别是比较小的。一般人可能无法解
- 一、Node.js实现代码var http = require('http');var util = require(
- 本文实例讲述了PHP实现对图片的反色处理功能。分享给大家供大家参考,具体如下:今天有个需求用php对图片进行反色,和转灰,之前不知道可不可行
- 目的工作中遇到一个需求,通过需要通过网站查询船舶名称得到MMSI码,网站来自船讯网。分析请求根据以往爬虫的经验,打开F12,通过输入船舶名称
- 一、总结说明Windows环境安装:paramunittest cmd输入命令:pip install paramunittest总结说明:
- 前言之前做的一个需求,简化描述下就是接受其他组的 MQ 的消息,然后在数据库里插入一条记录。为了防止他们重复发消息,插入多条重复记录,所以在