মনে করুন S এবং T সমান দৈর্ঘ্যের দুটি স্ট্রিং। আমাদের যাচাই করতে হবে যে آیا উভয় স্ট্রিংকেই একটি সাধারণ পয়েন্টে কাটা যায় যাতে S-এর প্রথম অংশ এবং T-এর দ্বিতীয় অংশ মিলে একটি প্যালিনড্রোম তৈরি করে।
উদাহরণস্বরূপ, S = "cat", T = "pac" হলে আউটপুট True, কারণ "c" + "ac" = "cac" প্যালিনড্রোম।
সমাধানের ধাপসমূহ
- n := a-এর আকার
- i := 0
- যখন i < n এবং a[i] == b[n-i-1],
- i := i + 1
- True ফেরত দিন যদি a[i:n-i] বা b[i:n-i] প্যালিনড্রোম হয়
উদাহরণ
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