双端队列应用之回文词检测Python

双端队列应用之回文词检测

  • 回文词就是给定一个字符串,从正序和逆序看是对称的。如“上海自来水来自海上”,“山东落花生花落东山”,“asdfdsa”,“123454321”等等。
  • 因为是对称的,一种方法就是判断正序和逆序遍历结果是否一样;另一种方法就是从两端同时读取,判断是否一样,一样则继续深入读取,继续判断,直到遍历完(偶数个字符),或者还剩下中间的那个字符。
    本文采用第二种方法,应用双端队列的特性进行实现。首先将字符串读入队列,然后双向读取并判断是否相同。(双向队列的实现参考上一篇)
def palchecker(aString):

    deque = Deque()
	# 回文词入队
    for i in aString:
        deque.addFront(i)

    state = True
    # 双向读取并比较
    while deque.size() > 1 and state:
        df = deque.removeFront()
        dr = deque.removeRear()
        # print(df,dr)
        if df != dr:
            state = False

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值