给定一个字符串 ,任务是检查字符串中所有字符的频率是否为质数。如果所有频率都是质数,则打印否则打印 。
例子:
Input: str = “geeksforgeeks”
Output: No
Character | Frequency |
---|---|
g | 2 |
e | 4 |
k | 2 |
s | 2 |
f | 1 |
o | 1 |
r | 1 |
It is clear that only the frequencies of g, k and s are prime.
Input: str = “aabbbccccc”
Output: Yes
方法:查找字符串中所有字符的频率并将其存储在映射中。然后检查所有频率是否为质数,如果所有频率均为质数,则打印别的 。
下面是上述方法的实现:
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现场课程美国》。