Skip to content
Related Articles

Related Articles

Improve Article

Check whether count of distinct characters in a string is Prime or not

  • Last Updated : 06 Jul, 2021

Given a string of lowercase English alphabets. The task is to check if the count of distinct characters in the string is prime or not.

Examples: 

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 

In this problem first we have to count the distinct characters in the string. We will use a map to store the frequency of each alphabets. The next step is to count the number of distinct characters, and check whether the number is prime or not . 
If the number is prime we will print Yes, else No. 

Below is the implementation of the above approach:  

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>
Output: 
Yes

 

Time Complexity: O((len(str))1/2)

Auxiliary Space: O(len(str))

Method 2: Using Counter function:

  1. Count the frequencies of all elements using Counter function and number of keys of this frequency dictionary gives the count and check whether it is prime or not.

Below is the implementation:

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

Output:

True
Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for the language and STL. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.



My Personal Notes arrow_drop_up
Recommended Articles
Page :