📌  相关文章
📜  具有主要频率的数组元素

📅  最后修改于: 2022-05-13 01:57:50.861000             🧑  作者: Mango

具有主要频率的数组元素

给定一个字符串。任务是找出出现次数为素数的字符数。
例子

Input : str = "geeksforgeeks"
Output : 3
Count of occurrences of characters are:
g -> 2
e -> 4
k -> 2
s -> 2
f -> 1
o -> 1
r -> 1
So, g, k and s occurs prime number of times i.e. 2

Input : str = "aabbcc"
Output : 3

开始遍历字符串并使用 C++ 中的映射计算每个字符的出现次数,并检查出现是否为素数。如果素数则增加计数,否则不增加。
下面是上述方法的实现:

C++
// C++ program to find count of numbers
// with prime frequencies
 
#include 
using namespace std;
 
// Function to check if a
// number is prime
bool check_prime(int n)
{
    // Corner cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;
 
    // This is checked so that we can skip
    // middle five numbers in below loop
    if (n % 2 == 0 || n % 3 == 0)
        return false;
 
    for (int i = 5; i * i <= n; i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
 
    return true;
}
 
// Function to find count of numbers
// with prime frequencies
int countPrimeFrequent(string s)
{
    int count = 0;
 
    // create a map to store
    // frequency of each character
    unordered_map mp;
 
    // Store frequency of each character
    // in the map
    for (int i = 0; i < s.length(); i++)
        mp[s[i]]++;
 
    // now iterate the map and characters
    // with prime occurrences
    for (auto it = mp.begin(); it != mp.end(); it++) {
 
        // if prime then increment count
        if (check_prime(it->second))
            count++;
    }
 
    return count;
}
 
// Driver Code
int main()
{
    string s = "geeksforgeeks";
 
    cout << countPrimeFrequent(s);
 
    return 0;
}


Java
// Java program to find count of numbers
// with prime frequencies
 
import java.util.*;
 
class GFG
{
 
    // Function to check if a
    // number is prime
    static boolean check_prime(int n)
    {
        // Corner cases
        if (n <= 1)
        {
            return false;
        }
        if (n <= 3)
        {
            return true;
        }
 
        // This is checked so that we can skip
        // middle five numbers in below loop
        if (n % 2 == 0 || n % 3 == 0)
        {
            return false;
        }
 
        for (int i = 5; i * i <= n; i = i + 6)
        {
            if (n % i == 0 || n % (i + 2) == 0)
            {
                return false;
            }
        }
 
        return true;
    }
 
    // Function to find count of numbers
    // with prime frequencies
    static int countPrimeFrequent(String s)
    {
        int count = 0;
 
        // create a map to store
        // frequency of each character
        Map mp = new HashMap<>();
 
        // Store frequency of each character
        // in the map
        for (int i = 0; i < s.length(); i++)
        {
            if (mp.containsKey(s.charAt(i)))
            {
                mp.put(s.charAt(i), mp.get(s.charAt(i)) + 1);
            }
            else
            {
                mp.put(s.charAt(i), 1);
            }
        }
 
        // now iterate the map and characters
        // with prime occurrences
        for (Map.Entry entry : mp.entrySet())
        {
 
            // if prime then increment count
            if (check_prime(entry.getValue()))
            {
                count++;
            }
        }
 
        return count;
    }
 
    // Driver Code
    public static void main(String[] args)
    {
        String s = "geeksforgeeks";
 
        System.out.println(countPrimeFrequent(s));
    }
}
 
// This code has been contributed by 29AjayKumar


Python3
# python3 program to find count of numbers
# with prime frequencies
 
# Function to check if a
# number is prime
 
def check_prime(n):
    # Corner cases
    if (n <= 1):
        return False
    if (n <= 3):
        return True
   
     # This is checked so that we can skip
     # middle five numbers in below loop
    if (n % 2 == 0 or n % 3 == 0):
        return False
   
    for i in range(5,n+1,6):
        if (n % i == 0 or n % (i + 2) == 0):
            return False
    return True
 
 
# Function to find count of numbers
# with prime frequencies
def countPrimeFrequent(s):
    count = 0
    # create a map to store
    # frequency of each character
    mp={}
   
    # Store frequency of each character
    # in the mp
    for i in range(0,len(s)):
        mp.setdefault(s[i],0)
        mp[s[i]]+=1
     
    # now iterate the map and characters
    # with prime occurrences
    for i in mp.keys():
        # if prime then increment count
        if (check_prime(mp[i])):
            count+=1
    return count;
 
# Driver Code
s = "geeksforgeeks"
print(countPrimeFrequent(s))
# This code is improved by sahilshelangia


C#
// C# program to find count of numbers
// with prime frequencies
using System;
using System.Collections.Generic;
 
class GFG
{
 
    // Function to check if a
    // number is prime
    static Boolean check_prime(int n)
    {
        // Corner cases
        if (n <= 1)
        {
            return false;
        }
        if (n <= 3)
        {
            return true;
        }
 
        // This is checked so that we can skip
        // middle five numbers in below loop
        if (n % 2 == 0 || n % 3 == 0)
        {
            return false;
        }
 
        for (int i = 5; i * i <= n; i = i + 6)
        {
            if (n % i == 0 || n % (i + 2) == 0)
            {
                return false;
            }
        }
 
        return true;
    }
 
    // Function to find count of numbers
    // with prime frequencies
    static int countPrimeFrequent(String s)
    {
        int count = 0;
 
        // create a map to store
        // frequency of each character
        Dictionary mp = new Dictionary();
 
        // Store frequency of each character
        // in the map
        for (int i = 0; i < s.Length; i++)
        {
            if (mp.ContainsKey(s[i]))
            {
                var v = mp[s[i]] + 1;
                mp.Remove(s[i]);
                mp.Add(s[i], v);
            }
            else
            {
                mp.Add(s[i], 1);
            }
        }
 
        // now iterate the map and characters
        // with prime occurrences
        foreach(KeyValuePair entry in mp)
        {
            // if prime then increment count
            if (check_prime(entry.Value))
            {
                count++;        
            }
        }
        return count;
    }
 
    // Driver Code
    public static void Main(String[] args)
    {
        String s = "geeksforgeeks";
 
        Console.WriteLine(countPrimeFrequent(s));
    }
}
 
// This code is contributed by Rajput-Ji


Javascript


输出:
3