• 数据结构之双端队列(Deque)


    1,双端队列定义

      双端队列:其两端都可以入列和出列的数据结构,如下图所示,队列后面(rear)可以加入和移出数据,队列前面(front)可以加入和移出数据

        

      双端队列操作:

    deque=Deque()  # 创建双端队列
    addFront(item)   #在队列前面加入数据
    addRear(item)    #在队列后面加入数据
    removeFront()    #在队列前面移除数据
    removeRear()     #在队列后面移除数据
    isEmpty()           #返回队列是否为空
    size()                 #返回队列大小

      操作示例:

    2, 用python实现双端队列

       Deque的代码实现如下: 

    class Deque(object):
        def __init__(self):
            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 isEmpty(self):
            return self.items==[]
        

    3,Deque的应用

      回文检查(Palindrome checker):检查字符序列是否为回文(回文指正读和反读都相同的字符序列,如 madam, 123321)。实现代码如下:

    #检测字符序列是否为回文
    def palChecker(palString):
        dq = Deque()
        for i in palString:
            dq.addFront(i)
    
        while dq.size()>1:
            first = dq.removeFront()
            last = dq.removeRear()
            if first!=last:
                return False
        return True
    print palChecker("lsdkjfskf")
    print palChecker("radar")
  • 相关阅读:
    es之java插入优化(批量插入)
    es之java操作插入文档
    使用java操作elasticsearch之与es简历连接
    es之关于consistency(数据一致性问题)
    es之词库热更新解决方案
    es之IK分词器
    es之分词器和分析器
    es之Source字段和store字段
    Elasticsearch的聚合操作
    中缀表达式实现简单计算器
  • 原文地址:https://www.cnblogs.com/silence-cho/p/10041026.html
Copyright © 2020-2023  润新知