8 或 9 个字母的回文错误
palindrome error with 8 or 9 letters
我有以下代码,在检查 python 时,选项 aaabaaaa、zzzazzazz 给了我错误的 test.Here 是代码,我不太确定如何修复它。
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
你有一些问题。这里的主要问题是您的 else
子句在循环内有一个 return True
。您想要做的是 在返回 True
之前完成对字符串 的迭代。如果您熟悉布尔逻辑,这相当于用 AND
.
短路
另一个问题(不是真正的问题,更多的是吹毛求疵)是您可以只使用整数除法 //
,而不必导入 math
的 floor
函数.
所以,
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]
另一种方法可能是使用切片。字符串可以像 arrays/lists 这样通过索引访问,也可以像这样倒置
def isPalindrom(string)
return string == string[::-1]
[::-1] 切片returns 反转字符串,与原字符串比较如果相同则为真,否则为假。
我有以下代码,在检查 python 时,选项 aaabaaaa、zzzazzazz 给了我错误的 test.Here 是代码,我不太确定如何修复它。
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
你有一些问题。这里的主要问题是您的 else
子句在循环内有一个 return True
。您想要做的是 在返回 True
之前完成对字符串 的迭代。如果您熟悉布尔逻辑,这相当于用 AND
.
另一个问题(不是真正的问题,更多的是吹毛求疵)是您可以只使用整数除法 //
,而不必导入 math
的 floor
函数.
所以,
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]
另一种方法可能是使用切片。字符串可以像 arrays/lists 这样通过索引访问,也可以像这样倒置
def isPalindrom(string)
return string == string[::-1]
[::-1] 切片returns 反转字符串,与原字符串比较如果相同则为真,否则为假。