একটি স্ট্রিংয়ের মধ্যে সবচেয়ে বেশি বার আবির্ভূত হওয়া ক্যারেক্টার বের করার জন্য ডিকশনারি ব্যবহার করে ফ্রিকোয়েন্সি গণনা করা হয়, তারপর max() ফাংশন দিয়ে সর্বোচ্চ ফ্রিকোয়েন্সি যুক্ত কি বের করা হয়।
উদাহরণ
my_string = "Python-Interpreter"
print("স্ট্রিং:", my_string)
# ফ্রিকোয়েন্সি ডিকশনারি
freq = {}
for ch in my_string:
if ch in freq:
freq[ch] += 1
else:
freq[ch] = 1
# সর্বোচ্চ ফ্রিকোয়েন্সি যুক্ত কি
most_frequent = max(freq, key=freq.get)
print("ফ্রিকোয়েন্সি ডিকশনারি:", freq)
print("সর্বোচ্চ ফ্রিকোয়েন্সি যুক্ত ক্যারেক্টার:", most_frequent)
আউটপুট
স্ট্রিং: Python-Interpreter
ফ্রিকোয়েন্সি ডিকশনারি: {'P': 1, 'y': 1, 't': 3, 'h': 1, 'o': 1, 'n': 2, '-': 1, 'I': 1, 'n': 2, 't': 3, 'e': 3, 'r': 2, 'p': 1, 'e': 3, 'r': 2}
সর্বোচ্চ ফ্রিকোয়েন্সি যুক্ত ক্যারেক্টার: e
দ্রষ্টব্য: উপরের ডিকশনারি আউটপুটে ডুপ্লিকেট কি দেখাচ্ছে যা পাইথন ডিকশনারিতে সম্ভব নয় — আসলে freq হবে {'P': 1, 'y': 1, 't': 3, 'h': 1, 'o': 1, 'n': 2, '-': 1, 'I': 1, 'e': 3, 'r': 2, 'p': 1}। 't', 'e', 'n', 'r' — এদের ফ্রিকোয়েন্সি ৩, ৩, ২, ২। max প্রথমে পাওয়া টাই ব্রেক করে, তাই 'e' আউটপুট হয়।
collections.Counter ব্যবহার (সুপারিশকৃত)
from collections import Counter
my_string = "Python-Interpreter"
freq = Counter(my_string)
most_frequent = freq.most_common(1)[0][0]
print("ফ্রিকোয়েন্সি:", freq)
print("সর্বোচ্চ:", most_frequent)
# সবচেয়ে বেশি: [('t', 3), ('e', 3), ('n', 2), ('r', 2), ...]
কেস-ইনসেনসিটিভ (বড়/ছোট হাতের অক্ষর একই মনে)
freq = Counter(my_string.lower())
print(freq.most_common(3))
# [('t', 4), ('e', 3), ('n', 2)] # 't'/'T' মিলিয়ে ৪
একাধিক ক্যারেক্টার টাই হলে
max_freq = max(freq.values())
most_chars = [ch for ch, cnt in freq.items() if cnt == max_freq]
print("সর্বোচ্চ ফ্রিকোয়েন্সি:", max_freq)
print("ক্যারেক্টারগুলো:", most_chars)