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实现读取命令行参数的方法
May 22 Python
Python简单网络编程示例【客户端与服务端】
May 26 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
Jul 11 Python
pandas中去除指定字符的实例
May 18 Python
Python中矩阵创建和矩阵运算方法
Aug 04 Python
python读取Excel实例详解
Aug 17 Python
Python3之手动创建迭代器的实例代码
May 22 Python
python判断无向图环是否存在的示例
Nov 22 Python
python实现3D地图可视化
Mar 25 Python
Python引入多个模块及包的概念过程解析
Sep 21 Python
python 自定义异常和主动抛出异常(raise)的操作
Dec 11 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
Jan 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中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
img的onload的另类用法
2008/01/10 Javascript
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
jquery 快速回到页首的方法
2013/12/05 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
javascript数组去重方法分析
2016/12/15 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
2017/11/27 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
vue的路由映射问题及解决方案
2019/10/14 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
python使用SMTP发送qq或sina邮件
2017/10/21 Python
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
关于tf.matmul() 和tf.multiply() 的区别说明
2020/06/18 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
电子商务专业应届生求职信
2014/05/28 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
工程款催款函
2015/06/24 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
Java设计模式中的命令模式
2022/04/28 Java/Android