অ্যারে (Array) হল একই ডেটা টাইপের উপাদানগুলির কন্টেইনার।
প্রাইম ফ্রিকোয়েন্সি (Prime Frequencies) মানে কোনো উপাদান কতবার রিপিট হয়েছে তা একটি প্রাইম সংখ্যা।
এই সমস্যায় আমাদের একটি স্ট্রিং/অ্যারে দেওয়া থাকবে। আমরা প্রতিটি ক্যারেক্টারের ফ্রিকোয়েন্সি গণনা করব, চেক করব সেটি প্রাইম কিনা, এবং প্রাইম ফ্রিকোয়েন্সি রেখে কতগুলো উপাদান আছে সেটি কাউন্ট করব।
উদাহরণ
Input: str = "helloworld" Output: 2
ব্যাখ্যা
ক্যারেক্টারগুলোর ফ্রিকোয়েন্সি:
h → 1, e → 1, l → 3, o → 2, w → 1, r → 1, d → 1
l ৩ বার (প্রাইম) এবং o ২ বার (প্রাইম) এসেছে। তাই আউটপুট ২।
অ্যালগরিদম
- স্ট্রিং ট্রাভার্স করে প্রতিটি ক্যারেক্টারের ফ্রিকোয়েন্সি
unordered_map-এ স্টোর করুন। - প্রতিটি ফ্রিকোয়েন্সি প্রাইম কিনা চেক করুন।
- প্রাইম হলে কাউন্ট বাড়ান।
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