ধরুন আমাদের একটি শব্দের লিস্ট আছে। এই শব্দগুলো একাধিকবার হতে পারে। আমাদের এই শব্দগুলোর ফ্রিকোয়েন্সি দেখাতে হবে এবং কতগুলো ডISTINCT শব্দ আছে সেটাও কাউন্ট করতে হবে।
উদাহরণস্বরূপ, যদি ইনপুট words = ["Book", "Sound", "Language", "Computer", "Book", "Language"] হয়, তবে আউটপুট হবে (4, '2 1 2 1') কারণ ৪টি ডISTINCT শব্দ আছে, প্রথম এবং তৃতীয় শব্দ দুবার করে এসে আছে।
সমাধানের ধাপসমূহ
d :=একটিOrderedDictযাতে আইটেমগুলো ইনসারশন অর্ডারে স্টোর হয়- প্রতিটি
wইনwordsএর জন্য:- যদি
wd-এ থাকে, তবেd[w] := d[w] + 1 - অন্যথায়
d[w] := 1
- যদি
d-এর সব কীয়ের লিস্টের সাইজ এবংd-এর সব ভ্যালু জয়েন করে একটি স্ট্রিং বানান, তারপর রিটার্ন করুন
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝার জন্য:
from collections import OrderedDict
def solve(words):
d = OrderedDict()
for w in words:
if w in d:
d[w] += 1
else:
d[w] = 1
return len(d.keys()), ' '.join([str(d[k]) for k in d.keys()])
words = ["Book", "Sound", "Language", "Computer", "Book", "Language"]
print(solve(words))
ইনপুট
["Book", "Sound", "Language", "Computer", "Book", "Language"]
আউটপুট
(4, '2 1 2 1')