Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

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