加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

利用双端队列解决回文词算法

发布时间:2020-12-17 17:02:24 所属栏目:Python 来源:网络整理
导读:什么是回文词: 指正读和倒读都是一样的词, 中文如: 上海自来水来自海上 山东落花生花落东山 英文如: eve,eye,ewe(母羊),gig(马车),level,madam,minim(量滴) 什么是双端队列? deque,全名double-ended queue)是一种具有队列和栈的性质的数据结构。双端

什么是回文词:

指正读和倒读都是一样的词,

中文如:

上海自来水来自海上

山东落花生花落东山

英文如:

eve,eye,ewe(母羊),gig(马车),level,madam,minim(量滴)

什么是双端队列?

deque,全名double-ended queue)是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。

双端队列并不具有内在LIFO或者FIFO的特性,如果使用双端队列来模拟栈或者队列,需要使用者自行维护操作的一致性。

代码如下:

class?Deque():
????def?__init__(self):
????????self.items=[]

????#?判断双端队列是否为空
????def?isEmpty(self):
????????return?len(self.items)

????#?往队首中加值
????def?addTop(self,item):
????????self.items.append(item)

????#?往队尾中加值
????def?addLast(self,item):
????????self.items.insert(0,?item)


????#?从队首中移除值
????def?removeTop(self):
????????return?self.items.pop()


????#?从队尾中移除值
????def?removeLast(self):
????????return?self.items.pop(0)

????#?双端队列的大小
????def?size(self):
????????return?len(self.items)


def?palchecker(str):
????dobj=Deque()

????for?s?in?str:
????????dobj.addTop(s)

????mark=True
????while?dobj.size()>1?and?mark:
????????top_str=dobj.removeTop()
????????last_str=dobj.removeLast()

????????if?top_str!=last_str:
????????????mark=False

????return?mark

if?__name__?==?'__main__':
????print(palchecker('abababa'))
????print(palchecker('上海自来水来自海上'))
????print(palchecker('山东落花生花落东山'))
????print(palchecker('山东'))


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读