zoukankan      html  css  js  c++  java
  • 七.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"))
  • 相关阅读:
    二维码生成器
    uniapp 上下左右手势滑动时的事件
    uniapp 类似钉钉的消息时间段显示
    css 币种与价格的底部对齐
    css 设置父元素透明度不影响子元素透明度
    js match方法截取某个字符串前面的内容
    下载电脑系统,服务等...
    uniapp 实现点击、滑动切换tab导航内容
    vue 实现分类渲染数据
    jquery 实现在事件完成后才能再次点击执行
  • 原文地址:https://www.cnblogs.com/studybrother/p/11145348.html
Copyright © 2011-2022 走看看