利用python的双向队列(Deque)数据结构实现回文检测的算法

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# learn <<Problem Solving with Algorithms and Data Structures>>
# Release 3.0
# chengang882 @ 2016-12-20
# 它可以将常见的中缀表达式转换成后缀表达式,并计算这个表达示的值
# Completed implementation of a deque ADT

class Deque(object):
    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)

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

if __name__ == "__main__":
    print(pal_checker("asdlfkajldkfa"))
    print(pal_checker("radar"))

  输出:

>>>
False
True
>>>

  

时间: 2024-12-25 23:13:35

利用python的双向队列(Deque)数据结构实现回文检测的算法的相关文章

php的双向队列类

(deque,全名double-ended queue)是一种具有队列和栈的性质的数据结构.双向队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行. 在实际使用中,还可以有输出受限的双向队列(即一个端点允许插入和删除,另一个端点只允许插入的双向队列)和输入受限的双向队列(即一个端点允许插入和删除,另一个端点只允许删除的双向队列).而如果限定双向队列从某个端点插入的元素只能从该端点删除,则该双向队列就蜕变为两个栈底相邻的栈了. DEQue.class.php <?php /** php

php实现的双向队列类实例

  本文实例讲述了php实现的双向队列类及其用法,对于PHP数据结构与算法的学习有不错的参考价值.分享给大家供大家参考.具体分析如下: (deque,全名double-ended queue)是一种具有队列和栈的性质的数据结构.双向队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行. 在实际使用中,还可以有输出受限的双向队列(即一个端点允许插入和删除,另一个端点只允许插入的双向队列)和输入受限的双向队列(即一个端点允许插入和删除,另一个端点只允许删除的双向队列).而如果限定双向队列从

php实现的双向队列类实例_php技巧

本文实例讲述了php实现的双向队列类及其用法,对于PHP数据结构与算法的学习有不错的参考价值.分享给大家供大家参考.具体分析如下: (deque,全名double-ended queue)是一种具有队列和栈的性质的数据结构.双向队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行. 在实际使用中,还可以有输出受限的双向队列(即一个端点允许插入和删除,另一个端点只允许插入的双向队列)和输入受限的双向队列(即一个端点允许插入和删除,另一个端点只允许删除的双向队列).而如果限定双向队列从某个

时间序列预测教程:如何利用 Python 预测波士顿每月持械抢劫案数量?

Jason Brownlee:时间序列预测法是一个过程,而获得良好预测结果的唯一途径是实践这个过程. 在本教程中,您将了解如何利用Python语言来预测波士顿每月持械抢劫案发生的数量. 本教程所述为您提供了一套处理时间序列预测问题的框架,包括方法步骤和工具,通过实践,可以用它来解决自己遇到的相关问题. 本教程结束之后,您将了解: 如何核查Python环境并准确地定义一个时间序列预测问题. 如何构建一套测试工具链,用于评估模型,开发预测原型.以及如何通过时间序列分析工具更好地理解你的问题. 如何开

利用Python读取外部数据文件的例子

不论是数据分析,数据可视化,还是数据挖掘,一切的一切全都是以数据作为最基础的元素.利用Python进行数据分析,同样最重要的一步就是如何将数据导入到Python中,然后才可以实现后面的数据分析.数据可视化.数据挖掘等.   在本期的Python学习中,我们将针对Python如何获取外部数据做一个详细的介绍,从中我们将会学习以下4个方面的数据获取:   1.读取文本文件的数据,如txt文件和csv文件   2.读取电子表格文件,如Excel文件   3.读取统计软件生成的数据文件,如SAS数据集.

《 Python树莓派编程》——3.4 利用Python进行编程

3.4 利用Python进行编程 现在,你已经了解了数据类型.接下来,让我们看看如何在实际程序中使用它们.当你创建一个Python程序时,首先必须从编译器的环境中退出来,并且打开一个文本编辑器,如emacs或者树莓派的Leafpad.在创建完程序后,将其".py"的扩展名保存.之后,你便可以通过输入以下命令运行该程序: 在众多的编程语言中,Python的语法也十分与众不同.Python使用空格或者缩进来分开不同的代码块.C语言等其他语言用花括号区分不同的代码块,如if语句:Python

利用Python实现简单的相似图片搜索的教程

  利用Python实现简单的相似图片搜索的教程         这篇文章主要介绍了利用Python实现简单的相似图片搜索的教程,文中的示例主要在一个图片指纹数据库中实现,需要的朋友可以参考下 大概五年前吧,我那时还在为一家约会网站做开发工作.他们是早期创业公司,但他们也开始拥有了一些稳定用户量.不像其他约会网站,这家公司向来以洁身自好为主要市场形象.它不是一个供你鬼混的网站--是让你能找到忠实伴侣的地方. 由于投入了数以百万计的风险资本(在US大萧条之前),他们关于真爱并找寻灵魂伴侣的在线广告

Python多线程和队列操作实例

  这篇文章主要介绍了Python多线程和队列操作实例,本文直接给给实例代码,需要的朋友可以参考下 Python3,开一个线程,间隔1秒把一个递增的数字写入队列,再开一个线程,从队列中取出数字并打印到终端 代码如下: #! /usr/bin/env python3 import time import threading import queue # 一个线程,间隔一定的时间,把一个递增的数字写入队列 # 生产者 class Producer(threading.Thread): def __i

利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程

  这篇文章主要介绍了利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程,示例基于CentOS操作系统,需要的朋友可以参考下 在 CentOS 下使用 apache+mod_wsgi 部署了 MoinMoin,但是编辑和保存页面很慢,于是准备使用 nginx+uwsgi 重新部署 本文假定已经按照官方指引 Quick MoinMoin on CentOS 完成了 apache 和 mod_wsgi 之外的基础安装 安装 Nginx 默认情况下,CentOS 下没有 ngin