前言

引自书中:栈(有时称为“后进先出栈”)是一个项的有序集合,其中添加移除新项总发生在同一端。这一端通常称为“顶部”。与顶部对应的端称为“底部
”。栈的底部很重要,因为在栈中靠近底部的项是存储时间最长的。最近添加的项是最先会被移除的。这种排序原则有时被称为 LIFO
,后进先出。它基于在集合内的时间长度做排序。较新的项靠近顶部,较旧的项靠近底部。

栈的函数

利用栈实现括号缺失检测
from pythonds.basic.stack import Stack s_dict = {"{":"}","[":"]","(":")"} def
parChecker(symbolString): balance = True s = Stack() for char in symbolString:
if char in "{[(": s.push(char) elif char in "}])": if s.isEmpty():
#一种情况是左括号缺失,栈内没有左括号 balance = False else: if s_dict[s.peek()] == char: s.pop()
#每组成一队括号,栈就弹出一个成员 return s.isEmpty() and balance #最后,所有括号均能匹配,栈应该是空的
print(parChecker('123(((131)))1331')) print(parChecker('([])({})[]'))
print(parChecker('123(((131)))1331')) print(parChecker('([])({})[]')) True True
Process finished with exit code 0
利用栈实现十进制与其他进制转换
from pythonds.basic.stack import Stack def
baseConverter(decNumber:int,base:int): digits = "0123456789ABCDEF" if base > 16
or base < 2: return decNumber #超出转换范围 remstack = Stack() #储存余数 while decNumber
> 0: rem = decNumber % base #取余数 remstack.push(rem) decNumber = decNumber //
base #向下取整做除法 newString = "" while not remstack.isEmpty() : newString =
newString + digits[remstack.pop()] return newString print(baseConverter(25,2))
print(baseConverter(169,16)) 11001 A9 Process finished with exit code 0
 

技术
©2019-2020 Toolsou All rights reserved,
Java开发2020年最新常见面试题整理【Spring源码分析】42-@Conditional详解element-ui踩坑记录神仙面试宝典你有了吗?半月看完25大专题,居然斩获阿里P8offer使用css样式设计一个简单的html登陆界面XCTF攻防世界web新手练习_ 9_command_executionJS中的解构赋值的详解与具体用途Python Web 框架elementui 穿梭框 el-transfer 展示列表内容文字过长ConcurrentHashMap实现原理及源码解析