使用 Deque 检查给定字符串是不是为回文

Posted

技术标签:

【中文标题】使用 Deque 检查给定字符串是不是为回文【英文标题】:Check whether a given string is palindrome using Deque使用 Deque 检查给定字符串是否为回文 【发布时间】:2021-11-30 21:27:52 【问题描述】:

我编写了一个 python 代码来检查给定的字符串是否是回文。但是,代码有问题。对于每个字符串,它都返回 True,即它是一个回文。 我的代码有什么问题?

这是我的代码:

class Deque:
    def __init__(self):
        self.items=[]
    def empty(self):
        return self.items==[]
    def push_back(self,item):
        self.items.append(item)
    def push_front(self,item):
        self.items.insert(0,item)
    def pop_back(self):
        self.items.pop()
    def pop_front(self):
        self.items.pop(0)
    def back(self):
        return self.items[-1]
    def front(self):
        return self.items[0]
    def size(self):
        return len(self.items)
    def at(self,index):
        return self.items[index]
def palcheck(string):
    D=Deque()
    for char in string:
        D.push_back(char)
    stillEqual=True
    while D.size() >1 and stillEqual:
        first=D.pop_front()
        last=D.pop_back()
        if first!=last:
            stillEqual=False
    return stillEqual

print(palcheck("lsknfjbdf"))

【问题讨论】:

【参考方案1】:

要测试一个字符串是否是回文,很简单:

def ispalindrome(s):
  return s == s[::-1]

【讨论】:

【参考方案2】:

您的 pop 方法不会显式返回任何内容 - 因此它们会隐式返回 None

因此,if first!=last: 将始终执行if None!=None:

只需更改您的弹出方法以返回弹出值:

def pop_back(self):
    return self.items.pop()
def pop_front(self):
    return self.items.pop(0)

【讨论】:

好的....成功了

以上是关于使用 Deque 检查给定字符串是不是为回文的主要内容,如果未能解决你的问题,请参考以下文章

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

检查字符串是不是是回文的字谜

python:递归检查以确定字符串是不是为回文

如何在不使用额外空间的情况下检查双向链表是不是为回文?

如果没有输入,如何退出代码?代码示例:检查字符串是不是为回文? (在 C 编程语言中)

利用递归函数实现检查一个字符串是否为回文数