ধরুন আমাদের একটি কোম্পানির নাম স্ট্রিং হিসেবে আছে। আমাদের কোম্পানির নাম থেকে সবচেয়ে সাধারণ তিনটি ক্যারেক্টার বের করতে হবে এবং নিচের নিয়ম অনুযায়ী দেখাতে হবে:
- সবচেয়ে বেশি ফ্রিকোয়েন্সির তিনটি অক্ষর বাছাই করুন
- নামের অক্ষর অনুযায়ী সর্ট করুন (ডিসেন্ডিং অর্ডার)
- যদি কিছু ক্যারেক্টারের ফ্রিকোয়েন্সি একই হয়, তবে অ্যালফাবেটিক্যাল অর্ডারে নিন
উদাহরণস্বরূপ, যদি ইনপুট s = "TUTORIALSPOINT" হয়, তবে আউটপুট হবে [[3, 'T'], [2, 'I'], [2, 'O']]।
সমাধানের ধাপসমূহ
x := s-এ থাকা অক্ষর এবং তাদের ফ্রিকোয়েন্সি ধারণকারী একটি ম্যাপres :=একটি নতুন লিস্টx-এ থাকা প্রতিটিiএর জন্য(x[i], i)পেয়ারres-এ ইনসার্ট করুনres-কে অ্যালফাবেটিক্যাল অর্ডারে সর্ট করুনres-কে ফ্রিকোয়েন্সি অনুযায়ী রিভার্স অর্ডারে সর্ট করুনres-এর প্রথম তিনটি আইটেম রিটার্ন করুন
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝার জন্য:
from collections import Counter
def solve(s):
x = Counter(s)
res = []
for i in x:
res.append([x[i], i])
res = sorted(res, key=lambda cnt: cnt[1])
res = sorted(res, key=lambda cnt: cnt[0], reverse=True)
return res[:3]
s = "TUTORIALSPOINT"
print(solve(s))
ইনপুট
"TUTORIALSPOINT"
আউটপুট
[[3, 'T'], [2, 'I'], [2, 'O']]