ধরুন আমাদের দুটি স্ট্রিং s এবং t আছে (দুইটো ছোট হাতের ইংরেজি অক্ষর ধারণ করে)। আমাদের ৩টি পেয়ারের একটি লিস্ট বের করতে হবে, যেখানে প্রতিটি পেয়ার এই ফরম্যাটে (l, k) এখানে k একটি স্ট্রিং এবং l এর দৈর্ঘ্য। এখানে প্রথম পেয়ারটি ধারণ করবে s এবং t-র সর্বোচ্চ কমন প্রিফিক্স p, তারপর s-র বাকি অংশ s' এবং t-র বাকি অংশ t'। সুতরাং চূড়ান্ত লিস্ট হবে [(length of p, p), (length of s', s'), (length of t', t')]।
উদাহরণস্বরূপ, যদি ইনপুট s = "science" এবং t = "school" হয়, তবে আউটপুট হবে [(2, 'sc'), (5, 'ience'), (4, 'hool')]।
সমাধানের ধাপসমূহ
lcp :=খালি স্ট্রিংfor i in range 0 to minimum of size of s or size of t:- যদি
s[i] == t[i], তবেlcp := lcp + s[i]
- যদি
s_rem := s[len(lcp):](সাবস্ট্রিং অফsথেকে ইন্ডেক্সlen(lcp)থেকে শেষ পর্যন্ত)t_rem := t[len(lcp):][(len(lcp), lcp), (len(s_rem), s_rem), (len(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')]