কম্পিউটার টিউটোরিয়াল

C#-এ স্ট্রিং-এ অক্ষর/application Character frequency counting

স্ট্রিং-এ প্রতিটি অক্ষর কতবার থাকছে তা গণনা করতে অ্যারে বা ডিকশনারি ব্যবহার করা হয়। ASCII ক্যারেক্টারের জন্য ২৫৬ আকারের ইন্ট অ্যারে দ্রুততম।

অ্যারে-ভিত্তিক পদ্ধতি (দ্রুত, ASCII-সীমাবদ্ধ)


static void CountChars(string s, int[] counts)
{
    foreach (char c in s)
        counts[c]++;
}

সম্পূর্ণ উদাহরণ


using System;

class CharFrequencyDemo
{
    static int MAX_CHARS = 256;
    
    static void Count(string s, int[] freq)
    {
        foreach (char c in s) freq[c]++;
    }
    
    public static void Main()
    {
        string s = "mynameistomhanks";
        int[] freq = new int[MAX_CHARS];
        
        Count(s, freq);
        
        Console.WriteLine("অক্ষর\t\tআবൃত্তি");
        for (int i = 0; i < MAX_CHARS; i++)
        {
            if (freq[i] > 0)
            {
                Console.WriteLine($"'{ (char)i }'\t\t{freq[i]} {(freq[i] == 1 ? "বার" : "বার")}");
            }
        }
    }
}

আউটপুট


অক্ষর		আবൃত্তি
' '		1 বার
'a'		2 বার
'e'		1 বার
'h'		1 বার
'i'		1 বার
'k'		1 বার
'm'		3 বার
'n'		2 বার
'o'		1 বার
's'		2 বার
't'		1 বার
'y'		1 বার

Unicode সাপোর্টের জন্য Dictionary


var freq = new Dictionary<char, int>();
foreach (char c in s)
    freq[c] = freq.GetValueOrDefault(c, 0) + 1;

LINQ এক-লাইনার


var freq = s.GroupBy(c => c).ToDictionary(g => g.Key, g => g.Count());

তুলনা

পদ্ধতিসময়স্পেসইউনিকোড
int[256] অ্যারেO(n)O(1)না (ASCII)
DictionaryO(n)O(k)হ্যাঁ
LINQ GroupByO(n log n)O(k)হ্যাঁ
  1. পাইথন প্রোগ্রাম: স্ট্রিংয়ের সবচেয়ে ज्यादा ফ্রিকোয়েন্সি যুক্ত ক্যারেক্টার বের করা

  2. পাইথনে স্ট্রিং থেকে ভিন্ন পূর্ণসংখ্যার সংখ্যা গণনা

  3. পাইথনে এনকোডেড স্ট্রিং-এর k-th ক্যারেক্টার বের করা (সেট-২)

  4. পাইথন প্রোগ্রাম দিয়ে স্ট্রিংয়ে প্রতিটি ক্যারেক্টারের ঘনত্ব বের করা