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中操作字典之update()方法的使用
May 22 Python
实例解析Python中的__new__特殊方法
Jun 02 Python
详解Python中的array数组模块相关使用
Jul 05 Python
基于hashlib模块--加密(详解)
Jun 21 Python
Python实现将16进制字符串转化为ascii字符的方法分析
Jul 21 Python
浅谈Python Opencv中gamma变换的使用详解
Apr 02 Python
NumPy.npy与pandas DataFrame的实例讲解
Jul 09 Python
Pandas库之DataFrame使用的学习笔记
Jun 21 Python
django 基于中间件实现限制ip频繁访问过程详解
Jul 30 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
Python定时任务APScheduler安装及使用解析
Aug 07 Python
python for循环赋值问题
Jun 03 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/10/20 PHP
域名和cookie问题(域名后缀)
2012/10/10 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
2019/03/18 PHP
PHP 文件上传限制问题
2019/09/01 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
vue+elementui 对话框取消 表单验证重置示例
2019/10/29 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
python 线程的暂停, 恢复, 退出详解及实例
2016/12/06 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
用Python解决x的n次方问题
2019/02/08 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
甜美蛋糕店创业计划书
2014/01/30 职场文书
元宵晚会主持词
2014/03/25 职场文书
商业项目策划方案
2014/06/05 职场文书
老龙头导游词
2015/02/11 职场文书
2015年感恩节演讲稿(优选篇)
2015/03/20 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
人民的好儿女观后感
2015/06/18 职场文书
运动会通讯稿200字
2015/07/20 职场文书
严以用权学习心得体会
2016/01/12 职场文书
Python如何使用循环结构和分支结构
2022/04/13 Python