Giả sử chúng ta có hai chuỗi S và T cùng độ dài, chúng ta phải kiểm tra xem liệu có thể cắt cả hai chuỗi tại một điểm chung để phần đầu tiên của S và phần thứ hai của T tạo thành một palindrome hay không.
Vì vậy, nếu đầu vào là S ="cat" T ="pac", thì đầu ra sẽ là Đúng, như Nếu chúng ta cắt các chuỗi thành "c" + "at" và "d" + "ac", thì " c "+" ac "là một palindrome.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
n:=kích thước của một
-
i:=0
-
trong khi i
-
i:=i + 1
-
-
trả về true khi a [từ chỉ mục i đến n-i-1] là palindrome hoặc b [từ chỉ mục i đến n-i-1] là palindrome
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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))
Đầu vào
"cat","dac"
Đầu ra
True