利用Python列表实现一个栈的结构,再使用栈实现括号匹配的算法,所谓的括号匹配是指在编程语言中,括号是成对出现的,最先出现的左括号,对应于最后的右括号,后出现的左括号对应于最新右括号,符合栈的特征

写一个栈的类:stack.py

class Stack:

def __init__(self):

self.items = []

def is_Empty(self):

return self.items == []

def push(self, item):

self.items.append(item)

def pop(self):

return self.items.pop()

def peek(self):

return self.items[len(items)-1]

def size(self):

return len(self.items)

实现括号匹配的算法程序:

from stack import Stack

def parChecker(symbolString):

s = Stack()

balanced = True

index = 0

while index < len(symbolString) and balanced:

symbol = symbolString[index]

if symbol == "(":

s.push(symbol)

elif symbol == ")":

if s.is_Empty():

balanced = False

else:

s.pop()

index += 1

if balanced and s.is_Empty():

return True

else:

return False

print(parChecker("(((2356)))"))

输出结果:

True

再测试

print(parChecker("(()))"))

输出结果False

扩展

能够匹配多种括号,{},[]

只需要小小的改动代码:

from stack import Stack

def parChecker(symbolString):

s = Stack()

balanced = True

index = 0

while index < len(symbolString) and balanced:

symbol = symbolString[index]

if symbol in "({[":

s.push(symbol)

elif symbol in ")}]":

if s.is_Empty():

balanced = False

else:

s.pop()

index += 1

if balanced and s.is_Empty():

return True

else:

return False

print(parChecker("[(({fdf}))]"))

python括号匹配算法_使用Python的栈实现括号匹配算法相关推荐

  1. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  2. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  3. python 小括号 运算_浅析python 中大括号中括号小括号的区分

    python语言最常见的括号有三种,分别是:小括号( ).中括号[ ]和大括号也叫做花括号{ }.其作用也各不相同,分别用来代表不同的python基本内置数据类型. 1.python中的小括号( ): ...

  4. python 网页编程_通过Python编程检索网页

    python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...

  5. python高斯求和_利用Python进行数据分析(3)- 列表、元组、字典、集合

    本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list.元组tuple.字典dict和集合set. image 索引 左边0开始,右边-1开始 通过index()函数查看索 ...

  6. python 免费空间_用python做大数据

    不学Python迟早会被淘汰?Python真有这么好的前景? 最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Pytho ...

  7. python希腊字母字符串_#10 Python字符串

    前言 通过上一节可知,Python6个序列的内置类型中,最常见的是列表和元组,但在Python中,最常用的数据类型却不是列表和元组,而是字符串.要想深入了解字符串,必须先掌握字符编码问题.因此本篇博文 ...

  8. python选择题题目_《Python程序设计》题库 - 选择题

    一.基础知识 1 . Python 语言属于( ) . C A . 机器语言 B . 汇编语言 C .高级语言 D .科学计算语言 2 .下列选项中,不属于 Python 特点的是( ) . B A ...

  9. python集群_使用Python集群文档

    python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...

最新文章

  1. 利用MAVEN打包可运行jar包,包括依赖的第三方包
  2. html 手机浏览器:屏幕适配 - 代码篇
  3. 安全客2017季刊-第3期
  4. java web汽车商城_基于jsp的汽车销售商城系统
  5. 干货| PHPCon上TARS-PHP全面解读及PPT下载
  6. java版我的世界光追,老瓶装新酒 光追版《我的世界》将至你心动了吗
  7. keep怎么生成运动轨迹_【念叨叨】keep手环拔草记
  8. R语言:使用openxlsx读取和写入数据
  9. 【多商户招商自营多元化功能】
  10. HTML分页符怎么设置,HTML中的分页符
  11. 计算机专业买哪一款华硕电脑好,华硕笔记本哪款好 如何挑选笔记本电脑
  12. php解析失败,php – 解析错误:语法错误,意外(T_VARIABLE)
  13. sklearn中KMeans重要参数n_clusters
  14. excel连接mysql速度太慢,excel表格数据太大-excel太大,运行缓慢该怎么办
  15. MD5算法的编程实现
  16. 判断当前时间段是否在某个时间段内(当前小时是否在当日某个时间段)
  17. 各领域公开数据集下载 | 资源
  18. 附视频教程|如何优雅扩容云硬盘
  19. PPT使用VBA批量删除图形
  20. linux时间同步服务z

热门文章

  1. BCH的压力测试其实已经开始了
  2. CentOS_7 MongoDb安装使用
  3. creator cc.Class跨脚本访问(小白笔记)
  4. mybatis脱离项目逆向生成映射文件
  5. React Component vs React Element
  6. MySQL/MariaDB数据库主从复制
  7. 下一跳网关和转发接口的使用情况
  8. SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性
  9. [推荐]在JavaScript中实现命名空间
  10. 下一代防火墙的5个优点