8或9个字母的回文错误

2024-09-29 21:51:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码,在浏览python时,选项aaabaaaa,zzzzazzz给了我false测试。这里是代码,我不太确定如何修复它。你知道吗

def checkPalindrome(inputString):
    n=len(inputString)  
    #if string is one letter
    if n==1:
        return True 
    #if string has more than one letter
    for i in range (0, math.floor(n/2)) :
        if inputString[i]!=inputString[n-1-i]:
            return False
        else:
            return True

Tags: 代码falsetruestringlenreturnifdef
3条回答

另一种方法是使用切片。字符串可以通过类似索引的数组/列表进行访问,也可以像这样进行反转。你知道吗

def isPalindrom(string)
    return string == string[::-1]

[::-1]切片返回反向字符串,如果与原始字符串相同,则与原始字符串的比较为True,否则为false。你知道吗

你有一些问题。这里的主要问题是else子句在循环中有一个return True。您要做的是在返回True之前完成对字符串的迭代。如果您熟悉布尔逻辑,这相当于用AND短路。你知道吗

另一个问题(不是真正的问题,更多的是吹毛求疵)是您可以只使用整数除法//,而不必导入mathfloor函数。你知道吗

所以

def isPalindrome(string):
    for i in range(0, len(string) // 2):
        if string[i] != string[-(i + 1)]:
            return False

    return True

另一种处理方法是使用all

def isPalindrome(string):
    return all(x == y for x, y in zip(string, reversed(string)))

或者,利用python方便的切片表示法实现最简洁的解决方案,我们有:

def isPalindrome(string):
    return string == string[::-1]

尝试使用数组切片(反转字符数组)

def checkPalindrome(inputString):
    n=len(inputString)  
    #if string is one letter
    if n==1:
        return True 
    #if string has more than one letter
    return inputString==inputString[::-1]

相关问题 更多 >

    热门问题