python - 确定两个字符串是否是特定索引处的回文的算法
问题描述
给定两个长度相等的字符串 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
我不确定要更改什么以确保返回正确的索引。
解决方案
根据您的问题,您想合并 A ( str1
) 的第一部分和 B ( ) 的第二部分str2
,但是在您的代码中,您正在做相反的事情,只需打开切片str1
和str2
:
firstStr = str1[:i] # from the start up to i (first part of str1)
secondStr = str2[i:] # from i to up the end (second part of str2)
测试:
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'))
输出:
4
推荐阅读
- docker - 有没有一种简单的方法来测试是否需要“docker build”?
- c++ - 如何使用 boost 获取当前文件路径?
- docker - Docker unable to login to Nexus docker registry (hosted)
- javascript - 如何在不使用 Refs 的情况下从父级调用子级的方法?
- c# - Kustomer API,如何在对话中添加附件
- python - 为什么 numpy.array() 使用比 python 列表更多的 RAM?
- windows - 如何使用 QT 和 CMake 在调试模式下启用控制台窗口并在发布模式下禁用?
- python - 当多个属性是AWS lambda python环境中的字符串变量时,如何插入dynamodb表?
- mysql - 使用 nodejs 和 express 从查询参数更新 mysql 数据表
- laravel-5.8 - (此路由不支持 POST 方法。支持的方法:GET、HEAD。) laravel 解决方案?