ধরুন আমাদের একটি টেক্সট আছে। আমাদের সবচেয়ে বড় সম্ভাব্য 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
-
i :=1, j :=পাঠ্যের আকার - 1
-
ic :=0, jc :=পাঠ্যের আকার
-
যখন আমি <=j, কর
-
যদি পাঠ্যের সাবস্ট্রিং [সূচী আইসি থেকে i-1 পর্যন্ত] পাঠ্যের সাবস্ট্রিং [সূচী j থেকে jc-1] এর মতো হয়, তাহলে
-
কাউন্টার :=কাউন্টার + 2
-
ic :=i
-
jc :=j
-
-
i :=i + 1
-
j :=j - 1
-
-
যদি ic jc এর মত না হয়, তাহলে
-
কাউন্টার :=কাউন্টার + 1
-
-
রিটার্ন কাউন্টার
উদাহরণ
আসুন আরও ভালভাবে বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখি
def solve(text):counter =0 i, j =1, len(text) - 1 ic, jc =0, len(text) যখন i <=j:if text[ic:i] ==text [j:jc]:counter +=2 ic =i jc =j i +=1 j -=1 যদি ic !=jc:counter +=1 ফিরতি countertext ="antaprezatepzapreanta"print(solve(text))
ইনপুট
<প্রে>[3,4,5,2,1,7,3,4,7], 3আউটপুট
11