📜  检查字符串中所有字符的频率是否为质数

📅  最后修改于: 2021-06-25 19:34:57             🧑  作者: Mango

给定一个字符串str    ,任务是检查字符串中所有字符的频率是否为质数。如果所有频率都是质数,则打印Yes    否则打印No
例子:

方法:查找字符串中所有字符的频率并将其存储在映射中。然后检查所有频率是否为质数,如果所有频率均为质数,则打印Yes    别的No
下面是上述方法的实现:

C++
// C++ implementation of above approach
#include 
using namespace std;
 
// function that returns true
// if n is prime else false
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;
}
 
// function that returns true if
// the frequencies of all the
// characters of s are prime
bool check_frequency(string s)
{
    // create a map to store
    // the frequencies of characters
    map m;
 
    for (int i = 0; i < s.length(); i++)
        // update the frequency
        m[s[i]]++;
 
    // check whether all the frequencies
    // are prime or not
    for (char ch = 'a'; ch <= 'z'; ch++)
        if (m[ch] > 0 && !isPrime(m[ch]))
            return false;
 
    return true;
}
 
// Driver code
int main()
{
    string s = "geeksforgeeks";
 
    // if all the frequencies are prime
    if (check_frequency(s))
        cout << "Yes" << endl;
 
    else
        cout << "No" << endl;
 
    return 0;
}


Java
import java.util.*;
 
// Java implementation of above approach
class GFG
{
 
    // function that returns true
    // if n is prime else false
    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;
    }
 
    // function that returns true if
    // the frequencies of all the
    // characters of s are prime
    static boolean check_frequency(char[] s)
    {
        // create a map to store
        // the frequencies of characters
        HashMap m = new HashMap();
 
        for (int i = 0; i < s.length; i++) // update the frequency
        {
            if (m.containsKey(s[i]))
            {
                m.put(s[i], m.get(s[i]) + 1);
            }
            else
            {
                m.put(s[i], 1);
            }
        }
 
        // check whether all the frequencies
        // are prime or not
        for (char ch = 'a'; ch <= 'z'; ch++)
        {
            if (m.get(ch) != null && m.get(ch) > 0 && !isPrime(m.get(ch)))
            {
                return false;
            }
        }
 
        return true;
    }
 
    // Driver code
    public static void main(String[] args)
    {
        String s = "geeksforgeeks";
 
        // if all the frequencies are prime
        if (check_frequency(s.toCharArray()))
        {
            System.out.println("Yes");
        }
        else
        {
            System.out.println("No");
        }
    }
}
 
// This code contributed by Rajput-Ji


Python3
# Python3 implementation of above approach
import math as mt
 
# function that returns true
# if n is prime else false
def isPrime(n):
    i = 2
 
    # 1 is not prime
    if (n == 1):
        return False
 
    # check if there is any factor or not
    for i in range(2, mt.ceil(mt.sqrt(n))):
        if (n % i == 0):
            return False
 
    return True
 
# function that returns true if the
# frequencies of all the characters
# of s are prime
def check_frequency(s):
     
    # create a map to store
    # the frequencies of characters
    m = dict()
 
    for i in range(len(s)):
         
        # update the frequency
        if s[i] in m.keys():
            m[s[i]] += 1
        else:
            m[s[i]] = 1
             
    # check whether all the frequencies
    # are prime or not
    for ch in m:
        if m[ch] > 0 and isPrime(m[ch]) == False:
            return False
 
    return True
 
# Driver code
s = "geeksforgeeks"
 
# if all the frequencies are prime
if (check_frequency(s)):
    print("Yes")
else:
    print("No")
         
# This code is contributed
# by Mohit kumar 29


C#
// C# implementation of above approach
using System;
using System.Collections.Generic;
 
class GFG
{
 
    // function that returns true
    // if n is prime else false
    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;
    }
 
    // function that returns true if
    // the frequencies of all the
    // characters of s are prime
    static bool check_frequency(char[] s)
    {
        // create a map to store
        // the frequencies of characters
        Dictionary m = new Dictionary();
 
        for (int i = 0; i < s.Length; i++) // update the frequency
        {
            if (m.ContainsKey(s[i]))
            {
                var c = m[s[i]]+1;
                m.Remove(s[i]);
                m.Add(s[i], c);
            }
            else
            {
                m.Add(s[i], 1);
            }
        }
 
        // check whether all the frequencies
        // are prime or not
        for (char ch = 'a'; ch <= 'z'; ch++)
        {
            if (m.ContainsKey(ch) && m[ch] > 0 &&
                                    !isPrime(m[ch]))
            {
                return false;
            }
        }
 
        return true;
    }
 
    // Driver code
    public static void Main(String[] args)
    {
        String s = "geeksforgeeks";
 
        // if all the frequencies are prime
        if (check_frequency(s.ToCharArray()))
        {
            Console.WriteLine("Yes");
        }
        else
        {
            Console.WriteLine("No");
        }
    }
}
 
/* This code contributed by PrinciRaj1992 */


Javascript


输出:
No

时间复杂度: O((len(str)) 1/2 )

辅助空间: O(len(str))

如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。