Cho hai chuỗi S và T cùng độ dài. Kiểm tra xem có thể cắt cả hai tại một điểm chung sao cho phần đầu của S và phần sau của T ghép thành palindrome.
Ví dụ
Đầu vào: S = "cat", T = "dac".
Đầu ra: True (cắt "c"+"at" và "d"+"ac", ghép "c"+"ac" = "cac" là palindrome).
Thuật toán
- Đặt
n = len(a),i = 0. - Khi
i < nvàa[i] == b[n-i-1], tăngi. - Kiểm tra xem
a[i:n-i]hoặcb[i:n-i]có phải palindrome không.
Mã nguồn Python
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()
print(ob.solve("cat", "dac"))
Đầu vào / Đầu ra
Input: "cat","dac"
Output: True