栈及其python实现
文章目录
- 栈(Stack)
- 栈的实现
- 栈的应用
- LeetCode 20th(有效的括号)
- LeetCode 405. 数字转换为十六进制数
栈(Stack)
栈是一个有次序的数据集,每个数据项仅从”栈顶“一端加入到数据集中、从数据集中移除,栈具有后进先出(LIFO)特性。
- 在栈中,数据项的加入和移除都仅发生在同一端;这一端叫做栈顶top,另一端叫栈底base;
- 距离栈底越近的数据,留在栈中的时间越长;
- 后进先出LIFO特性;
- 翻转次序,进栈和出栈的次序正好相反。
ls = [1,2,3,'dog',5,6,7,8]
s = Stack()
for i in ls:s.push(i)
while not s.isEmpty():print(s.pop())
栈的实现
数组(列表实现)栈。
# 创建一个空栈,不包含任何数据
class Stack(object):def __init__(self):self.items = []# 返回栈是否为空def isEmpty(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)
from ADT_CLASS import Stacks = Stack()
print(s.isEmpty())
s.push(1)
s.push('cat')
print(s.peek())
s.push(3)
print(s.size())
s.push(4)
print(s.pop())
print(s.pop())
print(s.size())
输出:
True
cat
3
4
3
2
栈的应用
LeetCode 20th(有效的括号)
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
from ADT_CLASS import Stackdef isValid(s):stack = Stack()com = Trueindex = 0while index < len(s) and com:if s[index] in '([{':stack.push(s[index])else:if stack.isEmpty():com = Falseelse:l = stack.pop()if not matches(l, s[index]):com = Falseindex += 1if com and stack.isEmpty():return Trueelse:return False
def matches(l,r):opens = '([{'closers = ")]}"return opens.index(l) == closers.index(r)
LeetCode 405. 数字转换为十六进制数
进制转换:
二进制有两个不同数字:0,1
八进制有八个不同数字:0,1,2,3,4,5,6,7
十六进制有十六个不同数字:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
在代码中我们可以通过调参base实现不同进制转换。
from ADT_CLASS import Stack
def toConverter(num, base):digits = '0123456789ABCDEF's = Stack()while num > 0:cur = num % bases.push(cur)num = num // baseans = ''while not s.isEmpty():ans += digits[s.pop()]return ans
注意:这里我们只处理了num>0的转换情况,如果是小于等于0的数需要另外讨论。
ADT_CLASS为我写的类文件,这样在使用的时候导入就可以了,比较方便。
栈及其python实现相关推荐
- python学全栈还是运维_Python全栈学习——Python基础及Web开发
原标题:Python全栈学习--Python基础及Web开发 在DevOps火热的敏捷行业中,无论是开发还是运维都在互联网快速发布下练就了一身的本领,微服务下的敏捷开发体系及智能运维体系都在实战中逐步 ...
- 数据结构之 栈 (Python 版)
数据结构之 栈 (Python 版) -- 利用线性表实现栈 栈的特性: 后进先出 基于顺序表实现栈 1 class SStack(): 2 3 ''' 4 基于顺序表 实现的 栈类 5 ''' 6 ...
- 全栈开发-Python的介绍
全栈开发-Python的介绍 本篇刚要 Python的诞生 Python的应用领域 Python的优缺点 Python的解释器 Python的发展史 Python2 or Python3? 一. Py ...
- 视频教程-Python全栈视频教程-Python
Python全栈视频教程 毕业于清华大学,曾担任Google算法工程师,微软人工智能领域全球最具价值专家,微软Tech Ed 大会金牌讲师. 精通C/ C++,Python ,Go语言,Sicikit ...
- python全栈慕课网靠谱么_全栈和python的区别 ?
1,全栈指的是人. 2,Python是一门编程语言. 全栈: 1,公司创始人/Co Founder全栈:技术+产品+设计+运营+销售+法务+融资+PR.作为公司创始人,在早期真的就是chief eve ...
- python global用法_【python测试开发栈】python基础语法大盘点
周边很多同学在用python,但是偶尔会发现有人对python的基础语法还不是特别了解,所以帮大家梳理了python的基础语法(文中的介绍以python3为例).如果你已然是python大牛,可以跳过 ...
- 栈中pop和top的区别是什么呢?用队列实现一个栈,Python语言
区别: pop是弹出栈顶元素,top是获得栈顶元素,不弹出 pop弹出后可以获取,把弹出的东西付给某个变量 具体可以通过用队列实现一个栈来分析原因. #用队列实现栈 class Stack:&quo ...
- python全栈和java全栈_全栈和python的区别
首先我们来e68a84e8a2ad62616964757a686964616f31333366303138看看Python在公司的一些基础应用: 1.验证算法:就是对公司一些常见设计算法或者公式的验证 ...
- 网易图灵学院python公开课_图灵学院 Python全系列教程全栈工程师 python视频教程下载...
大家怎么说? 老师很好,我认为,若想学好python,应该多练.多想.多看.学习资料不能仅限于老师给定的这些内容,这些毕竟是入门资料 老师讲的真不错,对于我们这种小白来说 也比较容易懂,虽然有些时候自 ...
- 【栈】python、单调栈解决收集雨水问题、力扣42题
以下是leetcode 42原题: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 示例 1: 输入:height = [0,1,0,2,1,0,1 ...
最新文章
- [MaxCompute MapReduce实践]通过简单瘦身,解决Dataworks 10M文件限制问题
- win7/8SVN必备的4个服务
- c语言探测次数不超过4的哈希算法,HihoCoder1084: 扩展KMP(二分+hash,求T串中S串的数量,可以失配一定次数)...
- jQuery停止动画
- 一份C++学习资源整理,咬牙切齿地好用。
- 2018 KubeCon + CloudNativeCon完美落幕,行云献力
- Arrays类中的binarysearch
- 自定义标题栏右键菜单
- 3个关于HR的OKR的优秀案例
- 基于python的论文前言怎么写_毕业论文前言怎么写
- vue+element在IE中遇到的问题
- 达人评测 r7 7730u和i7 12700h差距 锐龙r77730u和酷睿i712700h对比
- mysql的时间模糊chax_MySQL™ 参考手册(通用安装指南)
- 为此计算机上所有用户安装此加载项,win7打开特定网站提示“控件无法安装,windows已阻止此软件因为无法验证发行者”怎么办...
- 【文献阅读】 Sorghum segmentation by skeleton extraction
- 百度语音合成Rest API使用
- 英语思维导图大全 前言(一)
- OpenCV VideoCapture 设置和获取摄像头参数
- .osr 文件格式解析(二) - 数据类型
- 无中继的DHCP配置-ZTE中兴路由器