栈及其简单应用(二)(python代码)
一、括号判定
前一篇文章我们介绍了栈的简单应用中,关于括号的判定,但那只是一种括号的判定,下面我们来介绍多种括号混合使用时,如何判断括号左右一一对应。
比如“{}{(}(][”这种情况,需要对一种括号判定的代码进行修改。
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) //思路如一种括号判定时一样,从左到右逐渐循环,当碰到左括号时,加入栈。 else:
if s.isEmpty():
balanced = False //当栈为空时,说明字符串内没有左括号,或者左括号已经全部出栈,但是仍有多余括号。判定不匹配。
else:
top = s.pop()
if not matches(top,symbol):
balanced = False //碰到右括号时,而且栈不为空,那么从栈推出一个左括号,看是否与这个右括号相匹配,如果不匹配则判定最终字符串括号不匹配。 index = index + 1 if balanced and s.isEmpty():
return True else:
return False
下面是判定左括号和右括号匹配的matches函数:
def matches(open,close):
opens = "([{"
closer = ")]}"
return opens.index(open) == closer.index(close)
输入一个括号字符串:
print(parChecker("{{[]}}"))
print(parChecker("{{[]}"))
结果如下:

二、进制转换
在进制转换中也有体现栈的特性的地方,比如十进制转换为二进制,如下图

二进制最后的结果为:10000011,刚好与余数顺序相反,这就与栈的先入后出相契合,在进制转换中,我们 可以把余数入栈,最后输出结果时在出栈。
from stack import Stack def divideBy2(decNumber,base):
digits = "0123456789ABCDEF"
remstack =Stack() while decNumber > 0:
rem =decNumber%base
remstack.push(rem) #把余数入栈
decNumber = decNumber // base binString = ""
while not remstack.isEmpty():
binString = binString +digits[remstack.pop()] #余数出栈
栈及其简单应用(二)(python代码)的更多相关文章
- 栈及其简单应用(python代码)
栈属于线性结构(Linear Struncture),要搞清楚这个概念,首先要明白”栈“原来的意思,如此才能把握本质."栈“者,存储货物或供旅客住宿的地方,可引申为仓库.中转站,所以引入到计 ...
- python脚本-简单读取有效python代码量
import os count=[0,0] paths=[] file_count=[0] def sum_code(path): if os.path.isfile(path): one_file( ...
- Python全栈开发【基础二】
Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...
- 用一行Python代码制作动态二维码
在GitHub上发现了一个比较有意思的项目,只需要一行Python代码就可以快捷方便生成普通二维码.艺术二维码(黑白/彩色)和动态GIF二维码. GitHub网站参见:https://github.c ...
- 在树莓派上读取土壤湿度传感器读书-python代码实现及常见问题(全面简单易懂)
本篇文章简单介绍了如何在树莓派上配置土壤湿度传感器以读取土壤湿度(以百分比的形式出现)及代码实现. 主要包含有以下4个模块: 一.土壤湿度传感器常见类型及介绍 二.实验所需设备 三.设备连线方式与代码 ...
- 在树莓派上读取DHT11温湿度传感器-python代码实现及常见问题(全面简单易懂)
最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...
- 研磨设计模式解析及python代码实现——(二)外观模式(Facade)
一.外观模式定义 为子系统中的一组接口提供一个一致的界面,使得此子系统更加容易使用. 二.书中python代码实现 class AModuleApi: def testA(self): pass cl ...
- 一起来写2048(160行python代码)
前言: Life is short ,you need python. --Bruce Eckel 我与2048的缘,不是缘于一个玩家,而是一次,一次,重新的ACM比赛.四月份校赛初赛,第一次碰到20 ...
- 一起写2048(160行python代码)
前言: Life is short ,you need python. --Bruce Eckel 我与2048的缘,不是缘于一个玩家.而是一次,一次,重新的ACM比赛.四月份校赛初赛,第一次碰到20 ...
随机推荐
- SpringBoot学习笔记(十七:异步调用)
@ 目录 1.@EnableAsync 2.@Async 2.1.无返回值的异步方法 2.1.有返回值的异步方法 3. Executor 3.1.方法级别重写Executor 3.2.应用级别重写Ex ...
- DelayQueue源码分析
DelayQueue<E>继承于AbstractQueue<E>实现BlockingQueue<E> 内部变量包括ReentrantLock 类型的lock以及条件 ...
- 并发编程AQS----共享锁
Semaphore Semaphore 字面意思是信号量的意思,它的作用是控制访问特定资源的线程数目.应用场景:资源访问,服务限流. Semaphore 实现AbstractQueuedSynchro ...
- 我和ABP vNext 的故事
Abp VNext是Abp的.NET Core 版本,但它不仅仅只是代码重写了.Abp团队在过去多年社区和商业版本的反馈上做了很多的改进.包括性能.底层的框架设计,它融合了更多优雅的设计实践.不管你是 ...
- 如何证明sleep不释放锁,而wait释放锁?
wait 加锁示例 public class WaitDemo { private static Object locker = new Object(); public static void ma ...
- Mybatis——Mapper代理
mapper的代理对象生成位于org.apache.ibatis.binding.MapperProxyFactory的newInstance方法,使用jdk的动态代理,代理的InvocationHa ...
- .Net Core 项目开发中的Errors,Exceptions
这个错误是在连接数据库的时候,没有找到对应的表, namespace TodoApi.Models { public class TodoContext : DbContext { public To ...
- shell 输出json格式的内容
对于shell脚本的输出,如果要输出json格式的内容,我们可以借助python -m json.tool命令 比如 echo '{"name":"zhangsan&qu ...
- 遍历多个 txt 文件进行获取值
import random def load_config(path): with open(path,'r') as tou: return [line for line in tou.readli ...
- PHP - AJAX 与 MySQL-AJAX 数据库实例
PHP - AJAX 与 MySQL AJAX 可用来与数据库进行交互式通信. AJAX 数据库实例 下面的实例将演示网页如何通过 AJAX 从数据库读取信息: 本教程使用到的 Websites 表 ...