双端队列的实现与应用
抽象数据类型dequeue
一、实现
- 方法1
from collections import dequeue
- 方法2
基于list
class Dequeue():def __init__(self):self.items = []def addFront(self, item):"""右侧为front"""self.items.append(item)def addRear(self, item):self.items.insert(0, item)def removeFront(self):#删除元素要返回return self.items.pop()def removeRear(self):return self.items.pop(0) def isEmpty(self):return self.items == []def size(self):return len(self.items)
二、应用:判断是否为回文字符串
from dequeue import Dequeuedef pal_checker(mystr):"""检查字符串是否为回文字符串,即正序等于逆序字符串"""dq = Dequeue()mylist = [i for i in mystr]indicator = Truefor item in mylist:dq.addRear(item)for i in range(dq.size()//2):fornt = dq.removeFront()rear = dq.removeRear()if fornt != rear:indicator = Falsebreakreturn indicatorif __name__ == '__main__':print(pal_checker("lsdkjfskf"))print(pal_checker("radar"))
类似balance问题,用stack也可求解
双端队列的实现与应用相关推荐
- C++ 双端队列(deque)的使用
双端队列(deque)是什么 双端队列(deque)是一种随机访问的数据类型,提供了在序列两端快速插入和删除的功能,deque类似于vector, 双端队列(deque)属于STL(Standard ...
- python deque双端队列的神奇用法
python中的deque双端队列,类似list的任意一端都可实现较快的add和pop操作 from collections import dequed=deque(maxlen=20) for i ...
- python数据结构与算法:队列与双端队列
双端队列: #################队列#################### #coding:utf-8 """ Deque() 创建一个空的双端队列 ad ...
- LeetCode实战:设计循环双端队列
题目英文 Design your implementation of the circular double-ended queue (deque). Your implementation shou ...
- 数据结构之队列、双端队列
数据结构之队列.双端队列 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 队列是一种先进先出的(First in First Out)的线性表,简称FIFO.允许插入的 ...
- 关于学习Python的一点学习总结(54->集合->堆->双端队列)
集合,堆,双端队列 再谈集合set:集合是由内置类set实现的 >>> set(range(10)){0, 1, 2, 3, 4, 5, 6, 7, 8, 9} 可使用序列(或其他可 ...
- java lifo 队列_1.8 Java 队列 Queue、双端队列 Deque - Java 知识总结与学习
queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口.除了基本的 Collection 操作外,队列还 ...
- HDU 4286 Data Handler [栈,双端队列]
这题比较容易想到的做法是splay,但是splay写起来比较麻烦而且每次操作都有LogN的复杂度,双向链表也是可以实现的,但实践起来比较麻烦,尤其是翻转操作... 可以发现每次L或者R都是移动一位的, ...
- bzoj 2457 [BeiJing2011]双端队列 模拟+贪心
[BeiJing2011]双端队列 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 457 Solved: 203 [Submit][Status] ...
- 堆和栈组合:双端队列c++
双端队列(Deque:double ended queue)就是一个两端都是结尾的队列.队列的每一端都可以插入数据项和移除数据项.相对于普通队列,双端队列的入队和出队操作在两端都可进行. 双端队列的示 ...
最新文章
- 这26个阿里 Java 开源项目,你用过几个?
- 扩增子统计绘图8网络图-MENA
- python3.5.0下载-python核心编程最新版下载
- 060_Unicode字符编码
- nRF5_SDK_12.3.0 编译micro-ecc摘要
- Intel Realsense D435 测试摄像头在不同曝光值下的帧生成时间(防止曝光时间过长导致fps下降)auto_exposure_priority(没成功)
- Landsat中国西北地区行列号Shapefile图层对照(附行列号Shapefile下载)
- 一维二维_更高效的一维、二维材料过渡态搜索
- 启动页面和各设备的宽高比及像素
- 正则表达式的学习使用
- 单片机支持EM4100和T5577两种ID门禁卡
- linux 命令无法Tab补全,命令参数无法补全
- 机器学习:公式推导与代码实现全书代码!
- RK3399 GT1X触摸屏驱动调试笔记
- 一日一技:用Python绘画有多好玩
- 盆栽的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- JS的string方法
- 欧洲杯第三周的比赛闲聊
- word导出数据(tp5)
- 程序设计与算法(一)C语言程序设计-郭炜-笔记 (自用)
热门文章
- 【7.2】__getattr__、__getattribute__魔法函数
- 图解kafka - 设计原理解析
- @总结 - 6@ 后缀自动机
- pygame (1) 移动小乌龟
- sql查询每个学生的最高成绩mysql语句
- Processing Orders With Windows Workflow
- mysql的字符串处理函数
- Ubuntu8.10安装Netbeans6.7中文乱码解决方案
- git切换到指定tag
- es java聚合查询只有10_关于在elasticSearch中使用聚合查询后只显示10个bucket的问题...