zoukankan      html  css  js  c++  java
  • python中使用双端队列解决回文问题

      双端队列:英文名字:deque (全名double-ended queue)是一种具有队列性质的抽象数据类型

    双端队列中的元素可以从两端弹出,插入和删除操作限定在队列的两边进行。

      双端队列可以在队列任意一端入队出队。此外,经常还会有一个查看(Peek)操作,返回该端的数

    据而不将其出队。

      python的实现代码:

    class Deque:
            def __init__(self):
                    self.items = []
            def is_empty(self):
                    return self.items == []
            def add_front(self,item):
                    self.items.append(item)
            def add_rear(self,item):
                    self.items.insert(0,item)
            def remove_front(self):
                    return self.items.pop()
            def remove_rear(self):
                    return self.items.pop(0)
            def size(self):
                    return len(self.items)

      双端队列的特性决定了它很容易解决经典的回文问题。这里就给出源码,仅供参考:

    from Deque import *
    
    def pal_checker(a_string):
            char_deque = Deque()
    
            for ch in a_string:
                    char_deque.add_rear(ch)
    
            still_equal = True
              
            while char_deque.size() > 1 and still_equal:
                    first = char_deque.remove_front()
                    last = char_deque.remove_rear()
                    if first != last:
                            still_equal = False
                 
            return still_equal
    
    print(pal_checker("lsdkjfskf"))
    print(pal_checker("radar"))
  • 相关阅读:
    js中图片base64格式转文件对象
    vue中添加百度统计代码
    一个基于vueCli3的移动端多页面脚手架
    一个基于WabPack4的 Vue 多页面原生写法脚手架
    GPU加速有坑?
    mac效率工具
    git操作详解
    高性能移动端开发
    浅析vue数据绑定
    移动端适配
  • 原文地址:https://www.cnblogs.com/dylancao/p/8084565.html
Copyright © 2011-2022 走看看