ধরুন আমাদের একটি স্ট্রিং s আছে। আমাদের সেই ক্যারেক্টারগুলো সরিয়ে ফেলতে হবে যা ইতিমধ্যে ঘটেছে, এবং কম করা স্ট্রিংটি রিটার্ন করতে হবে। এজন্য আমরা একটি অর্ডার্ড ডিকশনারি ব্যবহার করব ক্যারেক্টারদের ইনসারশন অর্ডার মেইনটেইন করতে। ভ্যালু হবে সেই ক্যারেক্টারদের ফ্রিকোয়েন্সি, তবে এখানে ফ্রিকোয়েন্সি মান গুরুত্বপূর্ণ নয়। ডিকশনারি বানালে আমরা শুধু কীগুলো নিয়ে জয়েন করে আউটপুট স্ট্রিং পেতে পারি।
উদাহরণস্বরূপ, যদি ইনপুট s = "cabbbaadac" হয়, তবে আউটপুট হবে "cabd"।
সমাধানের ধাপসমূহ
d :=একটি ডিকশনারি যেখানে কীগুলো তাদের ইনসারশন অর্ডারে স্টোর থাকবে- প্রতিটি ক্যারেক্টার
cইনsএর জন্য:- যদি
cd-এ নেই, তবেd[c] := 0 d[c] := d[c] + 1
- যদি
- কীগুলোকে সঠিক ক্রমে একসাথে জয়েন করে আউটপুট স্ট্রিং বানান এবং রিটার্ন করুন
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝার জন্য:
from collections import OrderedDict
def solve(s):
d = OrderedDict()
for c in s:
if c not in d:
d[c] = 0
d[c] += 1
return ''.join(d.keys())
s = "cabbbaadac"
print(solve(s))
ইনপুট
"cabbbaadac"
আউটপুট
cabd