我正在做一些 python 在线教程,但我遇到了一个练习:A palindrome is a word which was spelled forwards as backwards.例如,单词
赛车
是回文:第一个和最后一个字母相同 (r),第二个和倒数第二个字母相同 (a),等等。编写一个函数 isPalindrome(S) 以字符串 S 作为输入,如果字符串是回文,则返回 True,否则返回 False。 这些是我写的代码:
def isPalindrome(S):
if S[0] == S[-1]
return print("True")
elif S[0] == S[-1] and S[1] == S[-2] :
return print("True")
else:
return print("False")
但是,如果单词是例如 ,,sarcas,, ,则输出不正确。所以我需要修复我的代码,以便它适用于任何单词。
O(n) 和内存昂贵的单行解决方案是:
def isPalindrome(word) : return word == word[::-1]
使用相同内存量的 O(n/2) 解决方案是:
def palindrome(word):
for i in range(len(word)//2):
if word[i] != word[-1-i]:
return False
return True
这就是@LennartRegebro提到的技巧
我是一名优秀的程序员,十分优秀!