ধরুন আমাদের দুটি স্ট্রিং আছে s এবং t (উভয়টিতেই ছোট হাতের ইংরেজি অক্ষর রয়েছে)। আমাদের 3 আকারের জোড়ার একটি তালিকা খুঁজে বের করতে হবে, যেখানে প্রতিটি জোড়া এই ফর্মে রয়েছে (l, k) এখানে k একটি স্ট্রিং এবং l এর দৈর্ঘ্য। এখন এই তিনটি জোড়ার মধ্যে, প্রথমটিতে s এবং t এর সাবস্ট্রিং রয়েছে যা এই দুটি স্ট্রিংয়ের সবচেয়ে দীর্ঘতম সাধারণ উপসর্গ p, তারপর s এর অবশিষ্ট অংশটি s' এবং t এর অবশিষ্ট অংশটি হল t'। তাই চূড়ান্ত তালিকা হবে [(p, p এর দৈর্ঘ্য), (s', s' এর দৈর্ঘ্য), (t', t' এর দৈর্ঘ্য)]।
সুতরাং, যদি ইনপুটটি s ="science" t ="school" এর মত হয়, তাহলে আউটপুট হবে [(2, 'sc'), (5, 'ience'), (4, 'hool')]পি>
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- lcp :=ফাঁকা স্ট্রিং
- আমি 0 থেকে ন্যূনতম s বা t আকারের রেঞ্জের জন্য, কর
- যদি s[i] t[i] এর মত হয়, তাহলে
- lcp :=lcp + s[i]
- যদি s[i] t[i] এর মত হয়, তাহলে
- s_rem :=সূচী থেকে s এর সাবস্ট্রিং (lcp এর আকার) শেষ পর্যন্ত
- t_rem :=সূচী থেকে t এর সাবস্ট্রিং (lcp এর আকার) শেষ হতে
- তিন জোড়ার একটি তালিকা ফেরত দিন [(lcp , lcp এর আকার), (s_rem , s_rem) ,(t_rem , t_rem এর আকার)]
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(s, t): lcp = '' for i in range(min(len(s), len(t))): if s[i] == t[i]: lcp += s[i] s_rem = s[len(lcp):] t_rem = t[len(lcp):] return [(len(lcp), lcp), (len(s_rem), s_rem), (len(t_rem), t_rem)] s = "science" t = "school" print(solve(s, t))
ইনপুট
"science", "school"
আউটপুট
[(2, 'sc'), (5, 'ience'), (4, 'hool')]