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如何使用AIML搭建聊天机器人
Jan 27 Python
Python的标准模块包json详解
Mar 13 Python
Python3实现发送QQ邮件功能(附件)
Dec 23 Python
微信跳一跳小游戏python脚本
Jan 05 Python
浅谈Python黑帽子取代netcat
Feb 10 Python
python使用zip将list转为json的方法
Dec 31 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
Jan 03 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
Feb 25 Python
python微信公众号开发简单流程实现
Mar 09 Python
Python requests模块cookie实例解析
Apr 14 Python
新手学python应该下哪个版本
Jun 11 Python
Python2与Python3关于字符串编码处理的差别总结
Sep 07 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 Document 代码注释规范
2009/04/13 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
JS匀速运动演示示例代码
2013/11/26 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
Vue中div contenteditable 的光标定位方法
2018/08/25 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
javascript操作向表格中动态加载数据
2020/08/27 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
Djang的model创建的字段和参数详解
2019/07/27 Python
python多进程间通信代码实例
2019/09/30 Python
python ftplib模块使用代码实例
2019/12/31 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
应届生妇产科护士求职信
2013/10/27 职场文书
自我鉴定怎么写
2013/12/05 职场文书
销售找工作求职信
2013/12/20 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
党性分析材料格式
2014/12/19 职场文书
竞聘书的秘诀
2019/04/02 职场文书
python爬虫selenium模块详解
2021/03/30 Python
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL
mysql事务隔离级别详情
2021/10/24 MySQL
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS