双向队列实现回文词(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)
def judge(s):
    s=list(s)
    double_queue=Deque()
    i=0
    a=2
    while i!=len(s):
        double_queue.addFront(s[i])
        i+=1
    # print(double_queue.items)
    while  not double_queue.isEmpty() and double_queue.size()!=1:
        if double_queue.removeFront()==double_queue.removeRear() :
            continue
        else:
            break
    if double_queue.isEmpty() or double_queue.size()==1:
        return True
    else:
        return False

print(judge('123321'))
print(judge('radar'))
print(judge('123341'))
print(judge('上海自来水来自海上'))
def judge2(s):#尝试降低复杂度
    s=list(s)
    double_queue=Deque()
    for i in s:
        double_queue.addFront(i)
    bool=True
    while double_queue.size()>1 and bool:#考虑剩余数是奇数和偶数的情况
        first=double_queue.removeFront()
        second=double_queue.removeRear()
        if first!=second:
            bool=False
    return bool
print(judge2('123321'))
print(judge2('radar'))
print(judge2('123341'))
print(judge2('上海自来水来自海上'))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值