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