• 七.Deque的应用案例-回文检查


    - 回文检测:设计程序,检测一个字符串是否为回文。

    - 回文:回文是一个字符串,读取首尾相同的字符,例如,radar toot madam

    - 分析:该问题的解决方案将使用 deque 来存储字符串的字符。我们从左到右处理字符串,并将每个字符添加到 deque 的尾部。在这一点上,deque 像一个普通的队列。然而,我们现在可以利用 deque 的双重功能。 deque 的首部保存字符串的第一个字符,deque 的尾部保存最后一个字符。我们可以直接删除并比较首尾字符,只有当它们匹配时才继续。如果可以持续匹配首尾字符,我们最终要么用完字符,要么留出大小为 1 的deque,取决于原始字符串的长度是偶数还是奇数。在任一情况下,字符串都是回文。

    class Dequeue():
        def __init__(self):
            self.items = []
        def addFont(self,item):
            self.items.append(item)
        def addRear(self,item):
            self.items.insert(0,item)
        def isEmpty(self):
            return self.items == []
        def removeFont(self):
            if self.isEmpty():
                return None
            else:
                return self.items.pop(0)
        
        def removeRear(self):
            if self.isEmpty():
                return None
            else:
                return self.items.pop()
        def size(self):
            return len(self.items)

    方法1

    def isHuiWei(s):
        #将字符添加到双端队列中
        q = Dequeue()
        #表示字符串是否为回文
        for ch in s:
            q.addFont(ch)
            
        while q.size() > 1:
            first = q.removeFont()
            last = q.removeRear()
            if first != last:
                return False
        return True 
    print( isHuiWei('aba'))
    True

    方法2:

    def palchecker(aString):
        chardeque = Deque()
    
        for ch in aString:
            chardeque.addRear(ch)
    
        stillEqual = True
    
        while chardeque.size() > 1 and stillEqual:
            first = chardeque.removeFront()
            last = chardeque.removeRear()
            if first != last:
                stillEqual = False
    
        return stillEqual
    
    print(palchecker("lsdkjfskf"))
    print(palchecker("radar"))
  • 相关阅读:
    socket的双重属性
    Client/Server 模型 与socket
    简单理解Socket 重要
    C++ 异常处理机制的实现
    ARM汇编之MOV指令
    指令集 与 cpu
    寄存器简介 与 ebp esp
    ESP和EBP 栈顶指针和栈底指针
    函数调用过程栈帧变化详解
    栈帧
  • 原文地址:https://www.cnblogs.com/studybrother/p/11145348.html
Copyright © 2020-2023  润新知