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 相关文章推荐
pycharm 使用心得(三)Hello world!
Jun 05 Python
Python中decorator使用实例
Apr 14 Python
python中xrange用法分析
Apr 15 Python
django连接mysql配置方法总结(推荐)
Aug 18 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
Apr 04 Python
Django自定义模板过滤器和标签的实现方法
Aug 21 Python
python颜色随机生成器的实例代码
Jan 10 Python
Python处理mysql特殊字符的问题
Mar 02 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
解决python Jupyter不能导入外部包问题
Apr 15 Python
python 将Excel转Word的示例
Mar 02 Python
python实现自定义日志的具体方法
May 28 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 cookies中删除的一般赋值方法
2011/05/07 PHP
在smarty中调用php内置函数的方法
2013/02/07 PHP
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
php计算整个目录大小的方法
2015/06/01 PHP
JS 继承实例分析
2008/11/04 Javascript
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
JavaScript实现的日期控件具体代码
2013/11/18 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
2014/06/26 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
浅谈JS运算符&amp;&amp;和|| 及其优先级
2016/08/10 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
2017/01/11 Javascript
Vue实现点击时间获取时间段查询功能
2020/08/21 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
Python进程间通信之共享内存详解
2017/10/30 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
python实现简单名片管理系统
2018/11/30 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
物业公司的岗位任命书
2014/06/06 职场文书
商务英语专业大学生职业生涯规划书
2014/09/14 职场文书
迎国庆演讲稿
2014/09/15 职场文书
颐和园的导游词
2015/01/30 职场文书
北京英语导游词
2015/02/12 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书