繁体   English   中英

python 中的回文迭代检查器

[英]Palindrome Iterative checker in python

我写了一个回文迭代方法,它返回正确的结果,除非字符串是 arena 或tax cat。 它在必须返回 false 的地方都返回 true。

def palIterative(n):
    for i in range(0, int(len(n)/2)):
        if n[i] != n[len(n) - i - 1]:
            return False
            break
        return True

return False语句之后不需要break 返回将突破 function。 但问题是您的return True语句有一个太多的选项卡。 return True语句应该在 for 循环完成之后。

def pallindromechecker(a): if a == a[::-1]: print("True") else: print("False")

pallindromechecker("IamaI")

试试上面的代码。 这是一种识别回纹的简单方法

您的return True行在第一次迭代时退出循环。 因此 function 将为任何具有相同首尾字母的单词返回 True。 此外,该 break 语句是不必要的,因为它上面的返回行将在到达 break 之前退出整个 function

最后,为了更加 Pythonic,您应该避免通过数组使用 go 的索引。 尝试对值使用迭代。

例如:

def isPalindrome(n):
    for forward,backward in zip(n,reversed(n)):
        if forward != backward:
            return False
    return True

请注意,如果您正在寻找编写解决方案的最短方法,您甚至根本不需要循环return n == n[::-1]就可以了。 它本质上是迭代的(与递归相反),因为 == 比较将遍历列表及其反向来比较元素(您不必明确地告诉它)。 您还可以将其视为只进行一次迭代。

出于比较目的,递归解决方案如下所示:

def isPalindrome(A):
    return not A or A[0]==A[-1] and isPalindrome(A[1:-1])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM