这是给定的任务:编写一个函数,以字符串格式接收两个单词,s1 和 s2。
如果 s1 和 s2 是回文,则应返回 True,否则返回 False。
我首先将字符串转换为列表。然后,我检查第一个字符串(现在转换为列表)是否是回文,然后检查第二个字符串(也转换为列表)。最终,我形成一个布尔值,如果两个列表都是回文,则返回 True,否则返回 False。但是,当我输入两个单词都是回文的字符串(kayak 和 madam)时,它返回 False。您能提供一些指导吗?
这是我的代码:
def palindrome(s1, s2):
convert_s1 = list(s1)
convert_s2 = list(s2)
for letter in [convert_s1]:
n = 0
if convert_s1[n] == convert_s1[-(n+1)]:
is_s1_palindrome = True
else:
is_s1_palindrome = False
for letter in [convert_s2]:
m = 0
if convert_s2[m] == convert_s1[-(m+1)]:
is_s2_palindrome = True
else:
is_s1_palindrome = False
if (is_s1_palindrome == True) and (is_s2_palindrome == True):
both_pals = True
else:
both_pals = False
return both_pals
if convert_s1[n] == convert_s1[-(n+1)]:
is_s1_palindrome = True
else:
is_s1_palindrome = False
这是错误的。一旦您检测到等效字符位置存在差异,它就不再是回文。
但是你继续,如果它再次开始匹配,你开始相信它再次是一个回文。
因此,像abcddefg
这样的东西将被视为回文,按照以下顺序:
a != g
,标记为假。
b != f
,标记为假。
c != e
,标记为假。
d == d
,标记为真。
def palindrome(s1, s2):
is_s1_palindrome = s1 == s1[::-1]
is_s2_palindrome = s2 == s2[::-1]
return is_s1_palindrome and is_s2_palindrome