ধরুন আমাদের একটি স্ট্রিং s আছে, যেটিকে আমরা যেকোন বিন্দুতে ঠিক একবার ঘোরাতে পারি। এই অপারেশনটি করার মাধ্যমে আমরা পেতে পারি এমন দীর্ঘতম প্যালিনড্রোমিক সাবস্ট্রিংয়ের দৈর্ঘ্য খুঁজে বের করতে হবে৷
সুতরাং, ইনপুট যদি s ="elklev" এর মত হয়, তাহলে আউটপুট হবে 7, যেহেতু আমরা "levelk" পেতে "el" এবং "klev" এর মধ্যে ঘোরাতে পারি। তাই এখানে দীর্ঘতম প্যালিনফ্রোমিক সাবস্ট্রিং দৈর্ঘ্য 5।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
s2 :=s দুবার সংযুক্ত করুন
-
max_len :=0
-
0 থেকে s − 1 এর পরিসরে x এর জন্য, করুন
-
y এর জন্য 0 থেকে s এর আকারের মধ্যে, করুন
-
temp :=s2 [সূচী x থেকে x + y]
-
যদি temp প্যালিনড্রোম হয় এবং temp> max_len এর আকার হয়, তাহলে
-
max_len :=তাপমাত্রার আকার
-
-
-
-
রিটার্ন max_len
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, s): s2 = 2 * s max_len = 0 for x in range(len(s)): for y in range(len(s) + 1): temp = s2[x : x + y] if temp == temp[::−1] and len(temp) > max_len: max_len = len(temp) return max_len ob = Solution() s = "elklev" print(ob.solve(s))
ইনপুট
"elklev"
আউটপুট
5