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计算书页码的统计数字问题实例
Sep 26 Python
Python 登录网站详解及实例
Apr 11 Python
基于pandas将类别属性转化为数值属性的方法
Jul 25 Python
Python过滤txt文件内重复内容的方法
Oct 21 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
Django ModelForm组件使用方法详解
Jul 23 Python
python图形绘制奥运五环实例讲解
Sep 14 Python
Python 解析pymysql模块操作数据库的方法
Feb 18 Python
Jupyter Notebook输出矢量图实例
Apr 14 Python
基于python实现监听Rabbitmq系统日志代码示例
Nov 28 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 Python
用 Python 元类的特性实现 ORM 框架
May 19 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 中英文语言转换类
2011/09/07 PHP
php利用事务处理转账问题
2015/04/22 PHP
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
基于JS设计12306登录页面
2016/12/28 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
React 组件间的通信示例
2018/06/14 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
JS访问对象两种方式区别解析
2020/08/29 Javascript
Python实现抓取网页并且解析的实例
2014/09/20 Python
快速入门python学习笔记
2017/12/06 Python
python绘制立方体的方法
2018/07/02 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
2020/06/23 Python
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
测绘工程本科生求职信
2013/10/10 职场文书
师德个人剖析材料
2014/02/02 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
党课培训心得体会
2014/09/02 职场文书
2014年化验室工作总结
2014/11/21 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
2015年幼师工作总结
2015/04/28 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
Pytorch可视化的几种实现方法
2021/06/10 Python
css3应用示例:新增的选择器
2022/03/16 HTML / CSS