Elementos de array con frecuencias principales

Dada una string. La tarea es encontrar el número de caracteres cuyo número de ocurrencias es primo. 
Ejemplos
 

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

Comience a recorrer la string y cuente las ocurrencias de cada carácter usando un mapa en C++ y verifique si una ocurrencia es prima o no . Si es primo, entonces incremente el conteo; de lo contrario, no.
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ program to find count of numbers
// with prime frequencies
 
#include <bits/stdc++.h>
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<char, int> 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<Character, Integer> 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<Character, Integer> 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<char, int> mp = new Dictionary<char,int>();
 
        // 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<char, int> 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

<script>
// Javascript program to find count of numbers
// with prime frequencies
 
 
// Function to check if a
// number is prime
function 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 || n % 3 == 0)
        return false;
 
    for (let 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
function countPrimeFrequent(s) {
    let count = 0;
 
    // create a map to store
    // frequency of each character
    let mp = new Map();
 
    // Store frequency of each character
    // in the map
    for (let i = 0; i < s.length; i++) {
        if (mp.has(s[i])) {
            mp.set(s[i], mp.get(s[i]) + 1);
        }
        else {
            mp.set(s[i], 1);
        }
    }
 
    // now iterate the map and characters
    // with prime occurrences
    for (let it of mp) {
 
        // if prime then increment count
        if (check_prime(it[1]))
            count++;
    }
 
    return count;
}
 
// Driver Code
 
let s = "geeksforgeeks";
 
document.write(countPrimeFrequent(s));
 
// This code is contributed by Saurabh Jaiswal
</script>
Producción: 

3

 

Publicación traducida automáticamente

Artículo escrito por sahilshelangia y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *