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 CSV模块使用实例
Apr 09 Python
python 读写、创建 文件的方法(必看)
Sep 12 Python
Python简单遍历字典及删除元素的方法
Sep 18 Python
微信跳一跳小游戏python脚本
Jan 05 Python
Python import与from import使用及区别介绍
Sep 06 Python
对python中类的继承与方法重写介绍
Jan 20 Python
树莓派3 搭建 django 服务器的实例
Aug 29 Python
python实现图像拼接
Mar 05 Python
Python的PIL库中getpixel方法的使用
Apr 09 Python
jupyter note 实现将数据保存为word
Apr 14 Python
对Python 字典元素进行删除的方法
Jul 31 Python
如何通过python实现IOU计算代码实例
Nov 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
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
2019/10/18 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
javascript &amp;&amp;和||运算法的另类使用技巧
2009/11/28 Javascript
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
jquery中子元素和后代元素的区别示例介绍
2014/04/02 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
Jquery解析json字符串及json数组的方法
2015/05/29 Javascript
AngularJS 依赖注入详解及示例代码
2016/08/17 Javascript
JavaScript 监控微信浏览器且自带返回按钮时间
2016/11/27 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
vue 设置路由的登录权限的方法
2018/07/03 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
使用Python脚本来获取Cisco设备信息的示例
2015/05/04 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
浅谈python写入大量文件的问题
2018/11/09 Python
Django如何使用redis作为缓存
2020/05/21 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
关于box-sizing的全面理解
2016/07/28 HTML / CSS
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
大学生毕业的自我评价分享
2014/01/02 职场文书
军训考核自我鉴定
2014/02/13 职场文书
英语教师岗位职责
2014/03/16 职场文书
《桥》教学反思
2014/04/09 职场文书
合同协议书格式
2014/04/18 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS
给numpy.array增加维度的超简单方法
2021/06/02 Python