频率等于给定字符串的其他字符的频率之和的字符
给定一个由小写英文字母组成的字符串str 。任务是找出字符串中是否有任何字符的频率等于字符串中其他字符的频率之和。如果存在这样的字符,则打印Yes否则打印No 。
例子:
Input: str = “hkklkwwwww”
Output: Yes
frequency(w) = frequency(h) + frequency(k) + frequency(l)
4 = 1 + 2 + 1
4 = 4
Input: str = “geeksforgeeks”
Output: No
方法:如果字符串的长度是奇数,则结果将始终为No 。在偶数长度字符串的情况下,计算字符串中每个字符的频率,对于任何字符,如果它的频率 =字符串长度的一半,则结果将为Yes else No 。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function that returns true if some character
// exists in the given string whose frequency
// is equal to the sum frequencies of
// other characters of the string
bool isFrequencyEqual(string str, int len)
{
// If string is of odd length
if (len % 2 == 1)
return false;
// To store the frequency of each
// character of the string
int i, freq[26] = { 0 };
// Update the frequencies of the characters
for (i = 0; i < len; i++)
freq[str[i] - 'a']++;
for (i = 0; i < 26; i++)
if (freq[i] == len / 2)
return true;
// No such character exists
return false;
}
// Driver code
int main()
{
string str = "geeksforgeeks";
int len = str.length();
if (isFrequencyEqual(str, len))
cout << "Yes";
else
cout << "No";
return 0;
}
Java
// Java implementation of the above approach.
class GFG
{
// Function that returns true if some character
// exists in the given string whose frequency
// is equal to the sum frequencies of
// other characters of the string
static boolean isFrequencyEqual(String str, int len)
{
// If string is of odd length
if (len % 2 == 1)
{
return false;
}
// To store the frequency of each
// character of the string
int i, freq[] = new int[26];
// Update the frequencies of the characters
for (i = 0; i < len; i++)
{
freq[str.charAt(i) - 'a']++;
}
for (i = 0; i < 26; i++)
{
if (freq[i] == len / 2)
{
return true;
}
}
// No such character exists
return false;
}
// Driver code
public static void main(String[] args)
{
String str = "geeksforgeeks";
int len = str.length();
if (isFrequencyEqual(str, len))
{
System.out.println("Yes");
}
else
{
System.out.println("No");
}
}
}
// This code contributed by Rajput-Ji
Python3
# Python3 implementation of the approach
# Function that returns true if some character
# exists in the given string whose frequency
# is equal to the sum frequencies of
# other characters of the string
def isFrequencyEqual(string, length):
# If string is of odd length
if length % 2 == 1:
return False
# To store the frequency of each
# character of the string
freq = [0] * 26
# Update the frequencies of
# the characters
for i in range(0, length):
freq[ord(string[i]) - ord('a')] += 1
for i in range(0, 26):
if freq[i] == length // 2:
return True
# No such character exists
return False
# Driver code
if __name__ == "__main__":
string = "geeksforgeeks"
length = len(string)
if isFrequencyEqual(string, length):
print("Yes")
else:
print("No")
# This code is contributed by Rituraj Jain
C#
// C# implementation of the above approach.
using System;
class GFG
{
// Function that returns true if some character
// exists in the given string whose frequency
// is equal to the sum frequencies of
// other characters of the string
static bool isFrequencyEqual(String str, int len)
{
// If string is of odd length
if (len % 2 == 1)
{
return false;
}
// To store the frequency of each
// character of the string
int i;
int []freq = new int[26];
// Update the frequencies of the characters
for (i = 0; i < len; i++)
{
freq[str[i] - 'a']++;
}
for (i = 0; i < 26; i++)
{
if (freq[i] == len / 2)
{
return true;
}
}
// No such character exists
return false;
}
// Driver code
public static void Main()
{
String str = "geeksforgeeks";
int len = str.Length;
if (isFrequencyEqual(str, len))
{
Console.WriteLine("Yes");
}
else
{
Console.WriteLine("No");
}
}
}
/* This code contributed by PrinciRaj1992 */
PHP
Javascript
输出:
No
时间复杂度: O(len),其中 len 是给定字符串的长度。