Compruebe si el recuento de caracteres distintos en una string es Prime o no

Complejidad de tiempo: O((len(str))1/2)

Espacio auxiliar: O(len(str))Complejidad de tiempo: O((l

Dada una string de alfabetos ingleses en minúsculas. La tarea es verificar si el conteo de caracteres distintos en la string es primo o no.

Ejemplos: 

Input : str = "geeksforgeeks"
Output :Yes
Explanation: The number of distinct characters in the
string is 7, and 7 is a prime number.

Input : str ="geeks"
Output : No 

En este problema primero tenemos que contar los distintos caracteres en la string . Usaremos un mapa para almacenar la frecuencia de cada alfabeto . El siguiente paso es contar el número de caracteres distintos y verificar si el número es primo o no. 
Si el número es primo imprimiremos Sí, de lo contrario No. 

A continuación se muestra la implementación del enfoque anterior:  

C++

// C++ program to check whether count of
// distinct characters in a string
// is Prime or not
#include <bits/stdc++.h>
using namespace std;
 
// Find whether a number is prime or not
bool isPrime(int n)
{
    int i;
 
    // 1 is not prime
    if (n == 1)
        return false;
 
    // check if there is any factor or not
    for (i = 2; i <= sqrt(n); i++) {
        if (n % i == 0)
            return false;
    }
    return true;
}
 
// Count the distinct characters in a string
int countDistinct(string s)
{
    // create a map to store the
    // frequency of characters
    unordered_map<char, int> m;
 
    // traverse the string
    for (int i = 0; i < s.length(); i++) {
        // increase the frequency of character
        m[s[i]]++;
    }
 
    return m.size();
}
 
// Driver code
int main()
{
    string str = "geeksforgeeks";
 
    if (isPrime(countDistinct(str)))
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
 
    return 0;
}

Java

// Java program to check whether count of
// distinct characters in a string
// is Prime or not
import java.util.*;
 
class GFG
{
    // Find whether a number is prime or not
    static boolean isPrime(int n)
    {
        int i;
     
        // 1 is not prime
        if (n == 1)
            return false;
     
        // check if there is any factor or not
        for (i = 2; i <= Math.sqrt(n); i++)
        {
            if (n % i == 0)
                return false;
        }
        return true;
    }
     
    // Count the distinct characters in a string
    static int countDistinct(String s)
    {
        // create a map to store the
        // frequency of characters
        Set<Character> m = new HashSet<Character>();
     
        // traverse the string
        for (int i = 0; i < s.length(); i++)
        {
             
            // increase the frequency of character
            m.add(s.charAt(i));
             
        }
         
        return m.size();
    }
     
    // Driver code
    public static void main(String []args)
    {
        String str = "geeksforgeeks";
     
        if (isPrime(countDistinct(str)))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}
 
// This code is contributed by ihritik

Python3

# Python 3 program to check whether
# count of distinct characters in a
# string is Prime or not
 
# from math library import
# sqrt method
from math import sqrt
 
# Find whether a number
# is prime or not
def isPrime(n) :
 
    # 1 is not prime
    if n == 1 :
        return False
 
    # check if there is any
    # factor or not
    for i in range(2, int(sqrt(n)) + 1) :
 
        if n % i == 0 :
            return False
 
    return True
 
# Count the distinct characters
# in a string
def countDistinct(s) :
 
    # create a dictionary to store
    # the frequency of characters
    m = {}
 
    # dictionary with keys and its
    # initialize with value 0
    m = m.fromkeys(s, 0)
 
    # traverse the string
    for i in range(len(s)) :
 
        # increase the frequency
        # of character
        m[s[i]] += 1
 
    return len(m.keys())
 
# Driver code    
if __name__ == "__main__" :
 
    str = "geeksforgeeks"
 
    if isPrime(countDistinct(str)) :
        print("Yes")
    else :
        print("No")
         
# This code is contributed
# by ANKITRAI1

C#

// C# program to check whether count of
// distinct characters in a string
// is Prime or not
using System;
using System.Collections.Generic;
 
class GFG
{
    // Find whether a number is prime or not
    static bool isPrime(int n)
    {
        int i;
     
        // 1 is not prime
        if (n == 1)
            return false;
     
        // check if there is any factor or not
        for (i = 2; i <= Math.Sqrt(n); i++)
        {
            if (n % i == 0)
                return false;
        }
        return true;
    }
     
    // Count the distinct characters in a string
    static int countDistinct(String s)
    {
        // create a map to store the
        // frequency of characters
        HashSet<char> m = new HashSet<char>();
     
        // traverse the string
        for (int i = 0; i < s.Length; i++)
        {
             
            // increase the frequency of character
            m.Add(s[i]);
             
        }
         
        return m.Count;
    }
     
    // Driver code
    public static void Main(String []args)
    {
        String str = "geeksforgeeks";
     
        if (isPrime(countDistinct(str)))
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}
 
// This code has been contributed by 29AjayKumar

Javascript

<script>
 
// Javascript program to check whether count of
// distinct characters in a string
// is Prime or not
 
// Find whether a number is prime or not
function isPrime(n)
{
    var i;
 
    // 1 is not prime
    if (n == 1)
        return false;
 
    // check if there is any factor or not
    for (i = 2; i <= Math.sqrt(n); i++) {
        if (n % i == 0)
            return false;
    }
    return true;
}
 
// Count the distinct characters in a string
function countDistinct(s)
{
    // create a map to store the
    // frequency of characters
    var m = new Map();
 
    // traverse the string
    for (var i = 0; i < s.length; i++) {
        // increase the frequency of character
        if(m.has(s[i]))
        {
            m.set(s[i], m[s[i]]+1);
        }
        else
        {
            m.set(s[i],1);
        }
    }
 
    return m.size;
}
 
// Driver code
var str = "geeksforgeeks";
if (isPrime(countDistinct(str)))
    document.write( "Yes" );
else
    document.write( "No" );
 
// This code is contributed by rutvik_56.
</script>
Producción

Yes

Complejidad de tiempo: O((len(str)) 1/2 )

Espacio auxiliar: O(len(str))

Método 2: Uso de la función de contador:

  1. Cuente las frecuencias de todos los elementos usando la función Contador y el número de teclas de este diccionario de frecuencia da el conteo y verifica si es primo o no.

A continuación se muestra la implementación:

Python3

# Python program for the above approach
from collections import Counter
from math import sqrt as sqrt
 
 
def isPrime(n):
 
    # 1 is not prime
    if n == 1:
        return False
 
    # check if there is any
    # factor or not
    for i in range(2, int(sqrt(n)) + 1):
 
        if n % i == 0:
            return False
 
    return True
 
# Function to count the number of distinct
# characters present in the string
# str and check whether it is prime
def countDis(str):
 
    # Stores all frequencies
    freq = Counter(str)
 
    # Return the size of the freq dictionary
    if(isPrime(len(freq))):
        return True
    else:
        return False
 
 
# Driver Code
if __name__ == "__main__":
 
        # Given string S
    S = "geeksforgeeks"
 
    print(countDis(S))
 
# This code is contributed by vikkycirus
Producción

True

Complejidad de tiempo: O((len(str)) 1/2 )

Espacio auxiliar: O(len(str))Complejidad de tiempo: O((len(str))1/2)

Espacio auxiliar: O(len(str)) Salida:

 

Publicación traducida automáticamente

Artículo escrito por andrew1234 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 *