ধরুন, আমাদের একটি স্ট্রিং 'input_str' দেওয়া হয়েছে। যদি আমরা input_str থেকে সমস্ত প্রত্যয় নির্ধারণ করি; উদাহরণস্বরূপ, যদি স্ট্রিংটি 'abcd' হয়, প্রত্যয়গুলি 'abc', 'bcd', 'cd', 'd'। এখন, আমরা input_str এবং একটি প্রত্যয়ের দীর্ঘতম সাধারণ উপসর্গের দৈর্ঘ্য দ্বারা input_str এবং সমস্ত প্রত্যয়ের মধ্যে মিল পরীক্ষা করি। input_str এবং সমস্ত প্রত্যয়ের মধ্যে মিলের যোগফল ফেরত দিতে হবে।
সুতরাং, যদি ইনপুটটি input_str ='tpotp' এর মত হয়, তাহলে আউটপুট হবে 7
'tpotp' স্ট্রিং থেকে সমস্ত প্রত্যয় হল 'tpotp', 'potp', 'otp', 'tp', এবং 'p'।
যদি আমরা input_str এর সাথে সমস্ত প্রত্যয়ের মিল পরীক্ষা করি, তাহলে আমরা −
পাব'tpotp' similarity 5 'potp' similarity 0 'otp' similarity 0 'tp' similarity 2 'p' similarity 0 Sum of similarities = 5 + 0 + 0 + 2 + 0 = 7.
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- রিটার্ন_লিস্ট :=ইনপুট_স্ট্রের আকার ধারণকারী একটি নতুন তালিকা
- i :=1
- p :=0
- q :=0
- r :=0
- যখন আমি
- যদি q
- যদি return_list[i-q]>=q+p-i, তারপর
- r :=q + p - i
- p :=0
- q :=0
- অন্যথায়,
- রিটার্ন_লিস্টের শেষে [i-q] যোগ করুন
- i :=i + 1
- r :=0
- যদি q
- যদিও (i + r
- r :=r + 1
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(input_str): return_list = [len(input_str)] i = 1 p, q = 0,0 r = 0 while i < len(input_str): if q < i < (q+p): if return_list[i-q] >= q+p-i: r = q + p - i p, q = 0, 0 else: return_list.append(return_list[i-q]) i += 1 r = 0 else: while i + r < len(input_str) and input_str[r] == input_str[i+r]: r += 1 return_list.append(r) p,q = r,i i += 1 r = 0 return sum(return_list) print(solve('tpotp'))
ইনপুট
'tpotp'
আউটপুট
5