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 21 Python
Python通过90行代码搭建一个音乐搜索工具
Jul 29 Python
Python构造自定义方法来美化字典结构输出的示例
Jun 16 Python
Python 错误和异常代码详解
Jan 29 Python
Python使用wget实现下载网络文件功能示例
May 31 Python
pytorch 数据集图片显示方法
Jul 26 Python
pandas数据筛选和csv操作的实现方法
Jul 02 Python
flask 实现上传图片并缩放作为头像的例子
Jan 09 Python
Python反爬虫伪装浏览器进行爬虫
Feb 28 Python
Django之腾讯云短信的实现
Jun 12 Python
Pytorch实现图像识别之数字识别(附详细注释)
May 11 Python
PyCharm 配置SSH和SFTP连接远程服务器
May 11 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新手上路(十)
2006/10/09 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
你所要知道JS(DHTML)中的一些技巧
2007/01/09 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
JS实现给对象动态添加属性的方法
2017/01/05 Javascript
js实现日历与定时器
2017/02/22 Javascript
基于pako.js实现gzip的压缩和解压功能示例
2017/06/13 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
vue项目中使用rem,在入口文件添加内容操作
2020/11/11 Javascript
[56:24]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第二局
2016/03/04 DOTA
Python检测QQ在线状态的方法
2015/05/09 Python
Python编程中字符串和列表的基本知识讲解
2015/10/14 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
python实现贪吃蛇小游戏
2020/03/21 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
.dcm格式文件软件读取及python处理详解
2020/01/16 Python
使用OpenCV对车道进行实时检测的实现示例代码
2020/06/19 Python
python打包多类型文件的操作方法
2020/09/21 Python
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
毕业生就业自荐信
2013/12/04 职场文书
小学生获奖感言范文
2014/02/02 职场文书
秋天的图画教学反思
2014/05/01 职场文书
会议欢迎标语
2014/06/30 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
升职自荐信范文
2015/03/27 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript