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

C++ তে প্রাইম ফ্রিকোয়েন্সি والے অ্যারে উপাদান খুঁজে বের করা


অ্যারে (Array) হল একই ডেটা টাইপের উপাদানগুলির কন্টেইনার।

প্রাইম ফ্রিকোয়েন্সি (Prime Frequencies) মানে কোনো উপাদান কতবার রিপিট হয়েছে তা একটি প্রাইম সংখ্যা।

এই সমস্যায় আমাদের একটি স্ট্রিং/অ্যারে দেওয়া থাকবে। আমরা প্রতিটি ক্যারেক্টারের ফ্রিকোয়েন্সি গণনা করব, চেক করব সেটি প্রাইম কিনা, এবং প্রাইম ফ্রিকোয়েন্সি রেখে কতগুলো উপাদান আছে সেটি কাউন্ট করব।

উদাহরণ

Input: str = "helloworld" Output: 2

ব্যাখ্যা

ক্যারেক্টারগুলোর ফ্রিকোয়েন্সি:

h → 1, e → 1, l → 3, o → 2, w → 1, r → 1, d → 1

l ৩ বার (প্রাইম) এবং o ২ বার (প্রাইম) এসেছে। তাই আউটপুট ২।

অ্যালগরিদম

  1. স্ট্রিং ট্রাভার্স করে প্রতিটি ক্যারেক্টারের ফ্রিকোয়েন্সি unordered_map-এ স্টোর করুন।
  2. প্রতিটি ফ্রিকোয়েন্সি প্রাইম কিনা চেক করুন।
  3. প্রাইম হলে কাউন্ট বাড়ান।

C++ কোড উদাহরণ

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int check_prime(int n) {
    if (n <= 1) return 0;
    if (n <= 3) return 1;
    if (n % 2 == 0 || n % 3 == 0) return 0;
    for (int i = 5; i * i <= n; i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return 0;
    return 1;
}

int countPrimeFrequent(string s) {
    int count = 0;
    unordered_map<char, int> mp;
    for (int i = 0; i < s.length(); i++)
        mp[s[i]]++;
    for (auto it = mp.begin(); it != mp.end(); it++) {
        if (check_prime(it->second))
            count++;
    }
    return count;
}

int main() {
    string s = "helloworld";
    cout << countPrimeFrequent(s);
    return 0;
}

আউটপুট

2
  1. C++-এ অ্যারে এলিমেন্টগুলোর LCM-এর প্রাইম ফ্যাক্টর

  2. C++-এ অন্য অ্যারে ব্যবহার করে অ্যারে উপাদান সর্বাধিক করা

  3. C++-এ অ্যারে-তে প্রতিটি K-তম প্রাইম নম্বরের গুণফল

  4. 0 থেকে N-1 পরিসরের কনস্ট্যান্ট অ্যারেতে ডুপ্লিকেট খুঁজে বের করা O(1) স্পেসে C++-তে