使用Python拆分两个字符串以形成回文程序
假设我们有两个长度相同的字符串a和b。我们必须选择一个索引并在该选择的索引处拆分两个字符串,将a拆分为两个字符串:a_pref和a_suff,其中a = a_pref | a_suff,并将b拆分为两个字符串:b_pref | b_suff(|是连接运算符)其中b = b_pref + b_suff。检查a_pref + b_suff或b_pref + a_suff是否形成回文(任何分割都可能是空字符串)
所以,如果输入是a =“pqrst”b =“turqp”,那么输出将是True,因为我们可以像[“ pq”,“ rst”]这样拆分a,而且b像[“ tu”,“ rqp”],因此如果我们将a_pref与b_suff连接,我们将得到“pqrqp”,这是一个回文。
为了解决这个问题,我们将遵循以下步骤−
- 对于每对(x,y)从[(a,b),(b,a)]的对列表中,执行以下操作
- i:=0,j:=x的大小-1
-
当x [i]与y [j]相同时且i<x的大小且j> 0时,执行以下操作
- i:=i + 1
-
j:= j-1
-
midx:=从索引i到j的x的子字符串
-
midy:=从索引i到j的y的子字符串
-
如果midx是回文或midy是回文,则
- 返回True
- 返回False
示例
让我们查看以下实现以更好地理解−
def solve(a, b):
for x, y in [[a, b], [b, a]]:
i, j = 0, len(x) - 1
while x[i] == y[j] and i<len(x) and j>0:
i += 1
j -= 1
midx = x[i:j+1]
midy = y[i:j+1]
if (midx == midx[::-1] or midy== midy[::-1]):
return True
return False
a = "pqrst"
b = "turqp"
print(solve(a, b))
输入
"pqrst","turqp"
产量
True