ধরুন আমাদের একটি স্ট্রিং s এবং এবং একটি মান k আছে। k এর মান হল s এর দৈর্ঘ্যের ফ্যাক্টর, বলুন দৈর্ঘ্যটি n। আমরা s কে n/k আকারের t_i নামক বিভিন্ন সাবস্ট্রিং-এ ভাগ করতে পারি। তারপর এই t_i ব্যবহার করুন যাতে u_i বানাতে হয়
-
u_i-এ উপস্থিত অক্ষরগুলি t_i
-এর অক্ষরগুলির অনুগামী -
এই স্ট্রিং থেকে যেকোনো পুনরাবৃত্তি অক্ষর মুছে ফেলা হবে যাতে u_i-তে প্রতিটি অক্ষরের ফ্রিকোয়েন্সি 1
আমাদের এই u_i স্ট্রিংগুলি
খুঁজে বের করতে হবেসুতরাং, যদি ইনপুটটি s ="MMPQMMMRM" k =3 এর মতো হয়, তবে আউটপুট হবে ["MP", "QM", "MR"] কারণ s এর আকার 9, এবং k 3, তাই 9/ 3 =3. স্ট্রিংগুলি হল MMP, QMM এবং MRM, কিন্তু যেহেতু আমরা ডুপ্লিকেট অক্ষর সমর্থন করি না, তাই তারা হবে MP, QM এবং MR৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- i :=0
- ret :=একটি নতুন তালিকা
- mp :=একটি নতুন মানচিত্র
- to_print :=ফাঁকা স্ট্রিং
- যখন i
- যদি i mod k 0 এর মত হয় এবং i 0 না হয়, তাহলে
- ret-এর শেষে insert to_print
- ক্লিয়ার এমপি এবং ক্লিয়ার টু_প্রিন্ট
- যদি s[i] mp-এ উপস্থিত না থাকে, তাহলে
- mp[s[i]] :=0
- to_print :=to_print + s[i]
- i :=i + 1
- যদি i mod k 0 এর মত হয় এবং i 0 না হয়, তাহলে
উদাহরণ
আসুন আরও ভালভাবে বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখি
def solve(s, k): i = 0 ret = [] mp, to_print = {}, "" while i < len(s): if i % k == 0 and i != 0: ret.append(to_print) mp, to_print = {}, "" if s[i] not in mp.keys(): mp[s[i]] = 0 to_print += s[i] i += 1 ret.append(to_print) return ret s = "MMPQMMMRM" k = 3 print(solve(s, k))
ইনপুট
"MMPQMMMRM", 3
আউটপুট
['MP', 'QM', 'MR']