ধরুন আমাদের একটি প্রদত্ত স্ট্রিং আছে, আমাদের সবচেয়ে বড় সাব-স্ট্রিং খুঁজে বের করতে হবে যা একটি প্রিফিক্স, একটি প্রত্যয় এবং সেই প্রদত্ত স্ট্রিংটির একটি সাব-স্ট্রিং। যদি এমন কোন সাবস্ট্রিং না থাকে, তাহলে -1 রিটার্ন করুন।
সুতরাং, ইনপুট যদি "languagepythonlanguageinterestinglanguage" এর মত হয়, তাহলে আউটপুট হবে "ভাষা"
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি ফাংশন get_lps() সংজ্ঞায়িত করুন। এটি স্ট্রিং লাগবে
-
n :=স্ট্রিংয়ের আকার
-
long_pref_suff :=n আকারের একটি অ্যারে, এবং 0
দিয়ে পূরণ করুন -
আকার :=0, long_pref_suff[0] :=0, i :=1
-
যখন i
-
যদি string[i] string[size] এর মত হয়, তাহলে
-
আকার :=আকার + 1
-
long_pref_suff[i] :=আকার
-
i :=i + 1
-
-
অন্যথায়,
-
যদি আকার 0 এর মতো না হয়, তাহলে
-
size :=long_pref_suff[আকার - 1]
-
-
অন্যথায়,
-
long_pref_suff[i] :=0
-
i :=i + 1
-
-
-
-
long_pref_suff ফেরত
-
প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
-
long_pref_suff :=get_lps(স্ট্রিং)
-
n :=স্ট্রিংয়ের আকার
-
যদি long_pref_suff[n - 1] 0 এর মত হয়, তাহলে
-
রিটার্ন -1
-
-
আমি 0 থেকে n - 1 রেঞ্জের জন্য, করুন
-
যদি long_pref_suff[i] long_pref_suff[n - 1] এর মত হয়, তাহলে
-
স্ট্রিং এর সাবস্ট্রিং ফেরত দিন[সূচী ০ থেকে long_pref_suff[i]]
-
-
-
যদি long_pref_suff[long_pref_suff[n - 1] - 1] 0 এর সমান হয়, তাহলে
-
রিটার্ন -1
-
-
অন্যথায়,
-
স্ট্রিং-এর সাবস্ট্রিং ফেরত দিন
-
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def get_lps(string):n =len(string) long_pref_suff =[0 for i range(n)] size =0 long_pref_suff[0] =0 i =1 while (iইনপুট "languagepythonlanguageinterestinglanguage"আউটপুট
ভাষা