ধরুন আমাদের একটি টেক্সট আছে। আমাদের সবচেয়ে বড় সম্ভাব্য 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