ধরুন আমরা একটি স্ট্রিং s আছে. আমাদের সেই অক্ষরগুলিকে মুছে ফেলতে হবে যা ইতিমধ্যে আগে ঘটেছে এবং হ্রাস করা স্ট্রিংটি ফিরিয়ে দিতে হবে। এটি সমাধান করার জন্য, আমরা অক্ষরগুলির সন্নিবেশ ক্রম বজায় রাখার জন্য একটি আদেশকৃত অভিধান ব্যবহার করব। মানটি সেই অক্ষরের ফ্রিকোয়েন্সি হবে, তবে ফ্রিকোয়েন্সি মান এখানে গুরুত্বপূর্ণ নয়। অভিধান তৈরি করার পরে, আমরা কেবল কীগুলি নিতে পারি এবং স্ট্রিং পেতে তাদের সাথে যোগ দিতে পারি।
সুতরাং, ইনপুট যদি s ="cabbbaadac" এর মত হয়, তাহলে আউটপুট হবে "cabd"।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- d :=একটি অভিধান যেখানে কীগুলি তাদের সন্নিবেশ ক্রম অনুসারে সংরক্ষিত হয়
- প্রতিটি অক্ষরের জন্য c s, do
- যদি d-এ c উপস্থিত না থাকে, তাহলে
- d[c] :=0
- d[c] :=d[c] + 1
- যদি d-এ c উপস্থিত না থাকে, তাহলে
- আউটপুট স্ট্রিং তৈরি করতে এবং রিটার্ন করতে সঠিকভাবে একের পর এক কী যোগ করুন।
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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