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

সি প্রোগ্রাম দিয়ে স্ট্রিংয়ে সর্বোচ্চ ফ্রিকোয়েন্সিostics वाले ক্যারেক্টার বের করা

স্ট্রিংয়ে ক্যারেক্টার ফ্রিকোয়েন্সি খুঁজে বের করা

স্ট্রিংয়ের প্রতিটি ক্যারেক্টার কতবার এসেছে তা গণনা করে সর্বোচ্চ ফ্রিকোয়েন্সিostics वाले ক্যারেক্টারটি বের করা হয়। ASCII ক্যারেক্টার সেট (২৫৬) ধরে ফрикোয়েন্সি অ্যারে ব্যবহার করা হয়।

অ্যালগরিদম

  1. ফрикোয়েন্সি অ্যারে freq[256] শূন্য দিয়ে ইনিশিয়ালাইজ করুন।
  2. স্ট্রিং ট্রাভার্স করে প্রতিটি ক্যারেক্টার এর ASCII ভ্যালুকে ইন্ডেক্স হিসেবে ব্যবহার করে ফ্রিকোয়েন্সি বাড়ান।
  3. সবচেয়ে বেশি ফ্রিকোয়েন্সিostics वाले ক্যারেক্টারটি খুঁজে বের করুন।

সি প্রোগ্রাম

#include <stdio.h>
#include <string.h>

#define MAX_CHARS 256
#define MAX_STR 100

int main() {
    char str[MAX_STR];
    int freq[MAX_CHARS] = {0};
    int i, max_char = 0;

    printf("Enter a string: ");
    fgets(str, sizeof(str), stdin);
    str[strcspn(str, "\n")] = '\0'; // newline হ্রাস

    // ফ্রিকোয়েন্সি কাউন্ট
    for (i = 0; str[i] != '\0'; i++) {
        unsigned char ch = (unsigned char)str[i];
        freq[ch]++;
    }

    // সর্বোচ্চ ফ্রিকোয়েন্সিostics वाले ক্যারেক্টার
    for (i = 1; i < MAX_CHARS; i++) {
        if (freq[i] > freq[max_char])
            max_char = i;
    }

    if (freq[max_char] > 0)
        printf("Max occurring character: '%c' = %d times\n", max_char, freq[max_char]);
    else
        printf("Empty string\n");

    return 0;
}

আউটপুট

Enter a string: tutorials point
Max occurring character: 't' = 3 times

বিভিন্ন ক্যারেক্টার টাইপ হ্যান্ডলিং

  • unsigned char কাস্ট ব্যবহার করুন যাতে নেগেটিভ ASCII ভ্যালু (signed char-এ) সঠিকভাবে হ্যান্ডল হয়।
  • এক্সটেন্ডেড ASCII / UTF-8 মাল্টি-বাইট ক্যারেক্টার এই মেথডে সঠিক কাজ করবে না।

সম্পূর্ণ ফ্রিকোয়েন্সি টেবিল প্রিন্ট (অপশনাল)

printf("\nFull frequency table:\n");
for (i = 0; i < MAX_CHARS; i++) {
    if (freq[i] > 0) {
        if (i >= 32 && i <= 126) // printable
            printf("'%c' = %d\n", i, freq[i]);
        else
            printf("ASCII %d = %d\n", i, freq[i]);
    }
}

টাইম ও স্পেস কমপ্লেক্সিটি

  • টাইম: O(n + 256) ≈ O(n)
  • স্পেস: O(256) = O(1) কনস্ট্যান্ট
  1. পাইথন প্রোগ্রাম - একটি স্ট্রিংয়ে কম wiederholt হওয়া ক্যারেক্টার খুঁজুন

  2. পাইথন প্রোগ্রাম: স্ট্রিংয়ের সবচেয়ে ज्यादा ফ্রিকোয়েন্সি যুক্ত ক্যারেক্টার বের করা

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

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