ধরুন আমাদের একটি টেক্সট আছে। আমাদের সবচেয়ে বড় সম্ভাব্য k খুঁজে বের করতে হবে যাতে সেখানে a[1], a[2], ..., a[k] থাকে যেমন:প্রতিটি a[i] একটি অ-খালি স্ট্রিং; তাদের সংযুক্তি a[1] + a[2] + ... + a[k] প্রদত্ত পাঠ্যের সমান; 1 থেকে k রেঞ্জের সকলের জন্য, a[i] =a[{k+1 - i}]।
সুতরাং, যদি ইনপুটটি "antaprezatepzapreanta" এর মত হয়, তাহলে আউটপুট হবে 11, কারণ আমরা এটিকে "(a)(nt)(a)(pre)(za)(tpe)(za)(pre)( এর মত বিভক্ত করতে পারি। a)(nt)(a)।"
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
শুরু :=0, শেষ :=পাঠ্যের দৈর্ঘ্য - 1
-
খালি স্ট্রিং দিয়ে temp1 এবং temp2 শুরু করুন
-
ans =1 যখন পাঠ্যের দৈর্ঘ্য বিজোড় হয়, অন্যথায় 0
-
শুরু করার সময়
-
temp1 :=temp1 + পাঠ্য[শুরু]
-
temp2 :=text[end] + temp2
-
যদি temp1 temp2 এর মত হয়, তাহলে −
-
temp1 এবং temp2 খালি স্ট্রিং হিসাবে সেট করুন
-
ans :=ans + 2
-
-
start :=start + 1
-
শেষ :=শেষ - 1
-
-
যদি পাঠ্যের দৈর্ঘ্য সমান হয় এবং (temp1 বা temp2 খালি না হয়)
-
ans :=ans + 1
-
-
উত্তর ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution(object): def longestDecomposition(self, text): start = 0 end = len(text)-1 temp1 = "" temp2 = "" ans = 1 if len(text) & 1 else 0 while start<end: temp1+=text[start] temp2 = text[end]+temp2 if temp1 == temp2: temp1 = temp2 = "" ans+=2 start+=1 end-=1 if len(text)%2 == 0 and(temp1 or temp2): ans += 1 return ans ob = Solution() print(ob.longestDecomposition("antaprezatepzapreanta"))
ইনপুট
"antaprezatepzapreanta"
আউটপুট
11