ধরুন আমাদের একটি স্ট্রিং s এবং একটি মান k আছে। k-এর মান s-র দৈর্ঘ্যের ফ্যাক্টর, ধরুন দৈর্ঘ্য n। আমরা s-কে n/kটি সাবস্ট্রিং t_i এ ভাগ করতে পারি যাদের সাইজ k। তারপর এই t_i ব্যবহার করে u_i বানাতে হবে যাতে:
u_i-তে থাকা ক্যারেক্টারগুলোt_i-এর ক্যারেক্টারদের সাবসিকোয়েন্স- রিপিট হওয়া ক্যারেক্টারগুলো সরিয়ে ফেলা হবে যাতে
u_i-তে প্রতিটি ক্যারেক্টারের ফ্রিকোয়েন্সি ১ হয়
আমাদের এই u_i স্ট্রিংগুলো বের করতে হবে।
উদাহরণস্বরূপ, যদি ইনপুট s = "MMPQMMMRM" এবং k = 3 হয়, তবে আউটপুট হবে ["MP", "QM", "MR"] কারণ s-র সাইজ ৯, k ৩, তাই ৯/৩ = ৩। স্ট্রিংগুলো হলো MMP, QMM, MRM, কিন্তু ডুপ্লিকেট ক্যারেক্টার না থাকায় সেগুলো হবে MP, QM, MR।
সমাধানের ধাপসমূহ
i := 0,ret := [],mp := {},to_print := ""while i < len(s):- যদি
i % k == 0 and i != 0, তবেto_printret-এ অ্যেন্ড করুন,mpএবংto_printক্লিয়ার করুন - যদি
s[i]mp-এ না থাকে, তবেmp[s[i]] := 0এবংto_print += s[i] i += 1
- যদি
to_printret-এ অ্যেন্ড করুনretরিটার্ন করুন
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝার জন্য:
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']