python中stack在实际中的简单应用之平衡符号
2023-09-11 14:17:11 时间
很多书籍都在讲stack的概念和使用方法,等我们把概念熟悉后,发现不知道在什么场景下使用
该结构体,这里就列几个实用的例子,让大家了解一下stack在实际中的用处和厉害之处。
由于stack中的特点是可以成对的pop和push的,针对成对出现的东西,是有用武之地的,特别是
处理一些平衡符号方面,是有很大用处的。下面这个例子就是使用stack判断平衡符号是否成对出现的
import timeit from timeit import Timer 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(self.items) - 1] def size(self): return len(self.items) s = Stack() def par_checker(symbol_string): s = Stack() balanced = True index = 0 while index < len(symbol_string) and balanced: symbol = symbol_string[index] if symbol == "(": s.push(symbol) else: if s.is_empty(): balanced = False else: s.pop() index = index + 1 if balanced and s.is_empty(): return True else: return False print "start sample checker:" print(par_checker('((()))')) print(par_checker('((())')) def matches(open,close): opens = "([{" closes = ")]}" return opens.index(open) == closes.index(close) def par_gen_checker(symbol_string): s = Stack() balanced = True index = 0 while index < len(symbol_string) and balanced: symbol = symbol_string[index] if symbol in "([{": s.push(symbol) else: if s.is_empty(): balanced = False else: top = s.pop() if not matches(top,symbol): balanced = False index = index + 1 if balanced and s.is_empty(): return True else: return False print "start general checker:" print(par_gen_checker('([{}])')) print(par_gen_checker('({})')) print(par_gen_checker('({))'))
测试结果:
start sample checker:
True
False
start general checker:
True
True
False
相关文章
- MongoDB学习笔记:Python 操作MongoDB
- python 应用开发之-用base64 对图片文件的编码和解码处理
- Python应用之-修改通讯录
- python应用-解决应用题
- python操作Excel模块openpyxl
- python virtualenv安装说明
- python的dict,set,list,tuple应用详解
- python的dict,set,list,tuple应用详解
- Python 日期和时间_python 当前日期时间_python日期格式化
- Python编程:利用python编程实现对基于时间序列的数据(dataframe格式)按照指定时间范围进行单方向关联,不存在的日期补充为默认的NaN
- Python语言学习之文件夹那些事:python和文件夹的使用方法之详细攻略
- Python语言学习:Python语言学习之逻辑控制语句(if语句&for语句&while语句&range语句&with语句)的简介、案例应用之详细攻略
- 28岁走投无路的我,转行到Python
- 〖Python自动化办公篇⑤〗- 文件自动化管理 - 清理重复的文件与批量修改文件名
- “化鲲为鹏,我有话说”如何用鲲鹏弹性云服务器部署《Python网络爬虫开发环境》
- Python实现KNN(K近邻)回归模型(KNeighborsRegressor算法)并应用网格搜索算法寻找最优参数值项目实战
- Python编程:使用gensim对中文文本进行相似度计算
- Python使用技巧(五):快速解决安装python-lxml模块库报错问题并简单使用
- 【Python】1.python 删除文件夹和文件
- 利用Python海龟绘图画一个世界杯的足球
- 【数据分析】Python 结构化数据分析工具 Pandas | Series 与 DataFrame | 读取CSV文件数据 |