假设我们有两个长度相同的弦S和T,则必须检查是否可以在同一点切割两个弦,以使S的第一部分和T的第二部分形成回文。
因此,如果输入像S =“ cat” T =“ pac”,则输出将为True,就像如果我们将字符串切成“ c” +“ at”和“ d” +“ ac”,那么“ c“ +” ac“是回文。
为了解决这个问题,我们将遵循以下步骤-
n:=一个的大小
i:= 0
当i <n且a [i]与b [ni-1]相同时,
我:=我+ 1
当a [从索引i到ni-1]为回文或b [从索引i到ni-1]为回文时,返回true
让我们看下面的实现以更好地理解-
class Solution: def solve(self, a, b): n = len(a) i = 0 while i < n and a[i] == b[-i-1]: i += 1 palindrome = lambda s: s == s[::-1] return palindrome(a[i:n-i]) or palindrome(b[i:n-i]) ob = Solution() S = "cat" T = "dac" print(ob.solve(S, T))
"cat","dac"
输出结果
True