当前位置: 首页 > news >正文

网站建设网络宣传游戏网站如何做

网站建设网络宣传,游戏网站如何做,乌审旗建设局网站,wordpress火车头免密发布模块接口目录 一、何谓双端队列 二、双端队列抽象数据类型 三、用Python实现双端队列 四、回文检测器 一、何谓双端队列 双端队列是与队列类似的有序集合。它有一前、一后两端,元素在其中保持自己的位置。与队列不同的是,双端队列对在哪一端添加和移除元素没…

目录

一、何谓双端队列

二、双端队列抽象数据类型

三、用Python实现双端队列

四、回文检测器


一、何谓双端队列

双端队列是与队列类似的有序集合。它有一前、一后两端,元素在其中保持自己的位置。与队列不同的是,双端队列对在哪一端添加和移除元素没有任何限制。新元素既可以被添加到前端,也可以被添加到后端。同理,已有的元素也能从任意一端移除。某种意义上,双端队列是栈和队列的结合。

值得注意的是,尽管双端队列有栈和队列的很多特性,但是它并不要求按照这两种数据结构分别规定的LIFO原则和FIFO原则操作元素。具体的排序原则取决于其使用者。

二、双端队列抽象数据类型

双端队列抽象数据类型由下面的结构和操作定义。如前所述,双端队列是元素的有序集合,其任何一端都允许添加或移除元素。双端队列支持以下操作。

  • Deque(0创建一个空的双端队列。它不需要参数,且会返回一个空的双端队列。
  • addFront(item)将一个元素添加到双端队列的前端。它接受一个元素作为参数,没有返回值。
  • addRear(item)将一个元素添加到双端队列的后端。它接受一个元素作为参数,没有返回值。
  • removeFront()从双端队列的前端移除一个元素。它不需要参数,且会返回一个元素,并修改双端队列的内容。
  • removeRear()从双端队列的后端移除一个元素。它不需要参数,且会返回一个元素,并修改双端队列的内容。
  • isEmpty()检查双端队列是否为空。它不需要参数,且会返回一个布尔值。
  • size()返回双端队列中元素的数目。它不需要参数,且会返回一个整数。

三、用Python实现双端队列

在这里,我们假设双端队列的后端是列表的位置0处

class Deque:def __init__(self):self.items=[]def isEmpty(self):return self.items==[]def addFront(self,item):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 size(self):return len(self.items)d=Deque()
print(d.isEmpty())d.addRear(4)
d.addRear('dog')
d.addFront('cat')
d.addFront(True)
print(d.size())
print(d.isEmpty())d.addRear(8.4)
print(d.removeRear())
print(d.removeFront())

在双端队列的Python实现中,在前端进行的添加操作和移除操作的时间复杂度是O(1),在后端的则是O(n)。

四、回文检测器

 运用双端队列可以解决一个非常有趣的经典问题:回文问题。回文是指从前往后读和从后往前读都一样的字符串,例如radar、toot,以及madam。

该问题的解决方案是使用一个双端队列来存储字符串中的字符。按从左往右的顺序将字符串中的字符添加到双端队列的后端。此时,该双端队列类似于一个普通的队列。然而,可以利用双端队列的双重性,其前端是字符串的第一个字符,后端是字符串的最后一个字符。

由于可以从前后两端移除元素,因为我们能够比较两个元素,并且只有在二者相等时才继续。如果一直匹配第一个和最后一个元素,最终会处理完所有的字符(如果字符数是偶数),或者剩下只有一个元素的双端队列(如果字符数是奇数)。任意一种结果都表明输入字符串是回文。

from pythonds.basic import Deque
def palchecker(aString):chardeque=Deque()for ch in aString:chardeque.addRear(ch)stillEqual=Truewhile chardeque.size()>1 and stillEqual:first=chardeque.removeFront()last=chardeque.removeRear()if first !=last:stillEqual=Falsereturn stillEqualprint(palchecker("lsdkjfskf"))
print(palchecker("toot"))

  

http://www.yayakq.cn/news/351948/

相关文章:

  • 有哪些网站做二手房好的建设系统网站
  • 网站开发协议书由谁来写普通网站建设的缺陷
  • 网站建设实训报告心得体会企业信息管理系统免费
  • 广州网站建设 领航科技苏州网站制作开发公司
  • 直播间 网站建设十大app排行榜
  • 六安做网站多少钱专业定制网页设计
  • 如何做网站充值接口设计企业网站内容
  • 文昌建设局网站长沙做网站建设公司哪家好
  • 网页版梦幻西游红拂女安卓aso优化排名
  • 安庆市重点工程建设局网站网站响应速度多少合适
  • 易语言做网站爆破工具电子商务的网站建设分析
  • vr成品网站源码在线观看微商货源网站源码
  • 建设网站用什么空间服务器商城全网推广运营公司
  • 建设部网站施工合同范本html转pdf在线
  • 广州网站开发哪家强注册公司流程及步骤
  • 视频网站自己怎么做义乌购app下载
  • 建站公司哪家好 知道万维科技做网站 乐清
  • 申请域名流程后怎样做网站河南网站制作价格
  • 电商网站的银行支付接入该怎么做什么网站后台程序好用
  • 信阳做网站推广信阳网站建设企业网站首页设计与制作
  • 宁波企业建站程序提供北京国互网网站建设
  • 普洱茶网站建设安卓端网站开发ide
  • 广东网站制作平台WordPress添加PHP代码
  • 教育网站 模板深圳企业网站建设维护
  • 无锡seo推广优化智能网站优化 cms 加盟
  • 怎样在手机做自己的网站静安手机网站建设
  • 电商网站的对比建设行业信息和技术应用服务网站
  • 深圳网站建设企业名录wordpress动态缓存
  • 网站服务器一个多少钱长沙外贸公司
  • 大淘客怎样做网站工作室 网站经营性备案