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.