双端队列(Deque)的python实现与应用——回文词判定

何为双端队列(Deque)

双端队列是一种有次序的数据集,数据项可以从队首加入,也可以从队尾加入,同时数据移除也可以从两端移除。
在这里插入图片描述
注:双端队列不具有先进先出或者先进后出特性。

Deque的python实现

双端队列数据类型的定义为:

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)			#返回队列里数据项的个数

注:双端队列的首尾方向可以根据自己的需求去定义

“回文词”判断

定义:正读和反读都是一样的词,如radar,madam,toot等
求解思路:用双端队列很容易解决“回文词”问题
(1)先将需要判定的词从队尾加入deque。
(2)再从两端同时移除字符判定是否相同,直到deque中剩下0个或1个字符。
python程序实现

def palchecker (astring):  ##定义回文词判定函数
    chardeque=Deque()

    for ch in astring:
        chardeque.addRear(ch)

    stillEqual=True

    while chardeque.size() > 1 and stillEqual:
        first=chardeque.removeFront()
        second=chardeque.removeRear()
        if first != second :
            stillEqual=False

        return stillEqual  

测试结果:

print(palchecker("radar"))
print(palchecker("ladfdfdab"))

True
False
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笨猪起飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值