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编写百度贴吧的简单爬虫
Apr 02 Python
几个提升Python运行效率的方法之间的对比
Apr 03 Python
Python 2.x如何设置命令执行的超时时间实例
Oct 19 Python
Python探索之创建二叉树
Oct 25 Python
Python中%是什么意思?python中百分号如何使用?
Mar 20 Python
python判断文件夹内是否存在指定后缀文件的实例
Jun 10 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
python retrying模块的使用方法详解
Sep 25 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
Feb 29 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
Apr 30 Python
Python如何在main中调用函数内的函数方式
Jun 01 Python
python使用openpyxl库读写Excel表格的方法(增删改查操作)
May 02 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
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
响应鼠标变换表格背景或者颜色的代码
2009/03/30 Javascript
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
2015/03/04 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
[02:27]2018DOTA2亚洲邀请赛赛前采访-OpTic
2018/04/03 DOTA
Python中apply函数的用法实例教程
2014/07/31 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
python打印文件的前几行或最后几行教程
2020/02/13 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
python把一个字符串切开的实例方法
2020/09/27 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
海飞丝的广告词
2014/03/20 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
2014年幼儿园重阳节活动方案
2014/09/16 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
水浒传读书笔记
2015/06/25 职场文书