python代数式括号有效性检验示例代码


Posted in Python onOctober 04, 2020

思路:

利用栈实现代数式中括号有效行的的检验:

代码:

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))

总结

到此这篇关于python代数式括号有效性检验的文章就介绍到这了,更多相关python代数式括号有效性检验内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
Apr 01 Python
详细介绍Ruby中的正则表达式
Apr 10 Python
Python中方法链的使用方法
Feb 23 Python
scrapy爬虫完整实例
Jan 25 Python
解决python3捕获cx_oracle抛出的异常错误问题
Oct 18 Python
使用Python脚本从文件读取数据代码实例
Jan 19 Python
基于python爬取有道翻译过程图解
Mar 31 Python
Selenium常见异常解析及解决方案示范
Apr 10 Python
离线状态下在jupyter notebook中使用plotly实例
Apr 24 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 Python
python Protobuf定义消息类型知识点讲解
Mar 02 Python
Python中如何处理常见报错
Jan 18 Python
关于Python字符编码与二进制不得不说的一些事
Oct 04 #Python
Python实现EM算法实例代码
Oct 04 #Python
python em算法的实现
Oct 03 #Python
浅析Python中字符串的intern机制
Oct 03 #Python
Python实现AES加密,解密的两种方法
Oct 03 #Python
python实现AdaBoost算法的示例
Oct 03 #Python
Django创建一个后台的基本步骤记录
Oct 02 #Python
You might like
PHP 多维数组排序实现代码
2009/08/05 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
vue中的计算属性实例详解
2018/09/19 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
python执行外部程序的常用方法小结
2015/03/21 Python
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
python验证码图片处理(二值化)
2019/11/01 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
日本无添加化妆品:HABA
2016/08/18 全球购物
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
意大利一家专营包包和配饰的网上商店:Borse Last Minute
2019/08/26 全球购物
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
财务主管自我鉴定
2014/01/17 职场文书
产品开发计划书
2014/04/27 职场文书
家庭教育的心得体会
2014/09/01 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技