给定两个长度相等的字符串A和B,找出是否可以拆分 在同一索引处的两个字符串,以便合并A的第一部分和第二部分 B的一部分形成回文。返回拆分的位置。回文是一个单词 向后读和向前读一样。 如果找不到解决方案,则返回-1。你知道吗
这是我到目前为止的情况
def palindrome(str1, str2):
if len(str1) != len(str2):
return None
for i in range(len(str1)):
firstStr = str1[i:]
secondStr = str2[:i]
if isPalindrome(firstStr+secondStr):
return i
return -1
def isPalindrome(s):
return s == s[::-1]
print(palindrome('abcdefgh', 'dasedcba'))
我的解决方案为测试用例返回-1
,尽管它应该返回4
我不确定要更改什么以确保返回正确的索引。你知道吗
您没有正确地获取第一个字符串的第一部分和第二个字符串的第二部分。请记住,当您剪切字符串时:
因此,您应该更改代码:
还要记住以下几点,如果两个字符串
str1
和str2
的长度不相同,则返回None
,因此可以直接写入return
,因为它隐式返回None
。但是,我认为最好引发一个异常,告诉用户str1
和str2
的长度不同。你知道吗根据您的问题,您希望合并A的第一部分(
str1
)和B的第二部分(str2
),但是在您的代码中,您要做的是相反的,只需切换str1
和str2
上的切片:测试:
输出:
你也应该把你的话颠倒过来,然后用这种方式来检查:
反向单词=单词[::-1]
相关问题 更多 >
编程相关推荐