C ++中具有质数频率的数组元素?
数组是具有相同数据类型的元素的容器。
素频率意味着该数组的元素的发生的数量是素数。
因此,基于这些定义,很难找到具有质数频率的数组元素。我们得到了一个字符串数组。我们必须找到字符的频率并检查频率是否为质数,然后计算具有质数频率的元素。
让我们举个例子
Input: str = “helloworld” Output: 2
说明
字符出现的次数是-
h -> 1 e -> 1 l -> 3 o -> 2 w-> 1 r -> 1 d -> 1
l出现素数,即3,o出现素数,即2。
开始遍历字符串,并使用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; }
输出结果
The repeat elements of the array are : 2