স্ট্রিং-এ সর্বাধিক বার আবৃত্তি হওয়া অক্ষর খুঁজতে ফ্রিকোয়েন্সি অ্যারে (ASCII) বা Dictionary (Unicode) ব্যবহার করা হয়।
অ্যারে-ভিত্তিক পদ্ধতি (ASCII, দ্রুত)
const int MAX_CHARS = 256;
int[] freq = new int[MAX_CHARS];
foreach (char c in s)
freq[c]++;
int maxCount = 0;
char maxChar = '\0';
for (int i = 0; i < MAX_CHARS; i++)
{
if (freq[i] > maxCount)
{
maxCount = freq[i];
maxChar = (char)i;
}
}
সম্পূর্ণ উদাহরণ
using System;
class MaxOccurredCharDemo
{
static int MAX_CHARS = 256;
public static void Main()
{
string s = "livelife!";
int[] freq = new int[MAX_CHARS];
foreach (char c in s) freq[c]++;
Console.WriteLine("সব অক্ষরের ফ্রিকোয়েন্সি ( > 1):");
for (int i = 0; i < MAX_CHARS; i++)
{
if (freq[i] > 1)
Console.WriteLine($"Character '{ (char)i }' Occurrence = {freq[i]} times");
}
// সর্বাধিক আবৃত্তি
int maxCount = freq.Max();
char maxChar = (char)Array.IndexOf(freq, maxCount);
Console.WriteLine($"\nসর্বাধিক আবৃত্তি: '{maxChar}' ({maxCount} বার)");
}
}
আউটপুট
সব অক্ষরের ফ্রিকোয়েন্সি ( > 1):
Character 'e' Occurrence = 2 times
Character 'i' Occurrence = 2 times
Character 'l' Occurrence = 2 times
সর্বাধিক আবৃত্তি: 'l' (2 বার)
Unicode সাপোর্ট: Dictionary
var freq = new Dictionary<char, int>();
foreach (char c in s)
freq[c] = freq.GetValueOrDefault(c, 0) + 1;
var maxPair = freq.OrderByDescending(kvp => kvp.Value).First();
Console.WriteLine($"Max: '{maxPair.Key}' = {maxPair.Value}");
LINQ এক-লাইনার
var maxChar = s.GroupBy(c => c).OrderByDescending(g => g.Count()).First().Key;
নোট
- একাধিক অক্ষরের একই সর্বোচ্চ ফ্রিকোয়েন্সি থাকলে প্রথমটি ফেরত দেয়।
- অ্যারে পদ্ধতি শুধু ASCII (০-২৫৫) এর জন্য।
- বড় স্ট্রিং/ইউনিকোডের জন্য Dictionary বা LINQ ব্যবহার করুন।