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++ 中的map计算每个字符出现的次数,并检查出现的次数是否为质数。如果是质数,则增加计数,否则不增加计数。

算法

要检查元素的质数频率,我们将检查元素的出现次数,并检查计数是否为质数。为此,我们将考虑映射。

示例

在线演示

#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

更新于:04-Oct-2019

200 次浏览

开启您的 职业

完成该课程即可获得认证

开始
广告
© . All rights reserved.