Dada una string str que consta de alfabetos ingleses en minúsculas. La tarea es encontrar si hay algún carácter en la string cuya frecuencia sea igual a la suma de las frecuencias de otros caracteres de la string. Si tal carácter existe, imprima Sí , de lo contrario, imprima No.
Ejemplos:
Entrada: str = “hkklkwwwww”
Salida: Sí
frecuencia(w) = frecuencia(h) + frecuencia(k) + frecuencia(l)
4 = 1 + 2 + 1
4 = 4
Entrada: str = “geeksforgeeks”
Salida: No
Enfoque: si la longitud de la string es impar, el resultado siempre será No . En el caso de una string de longitud uniforme, calcule la frecuencia de cada uno de los caracteres de la string y para cualquier carácter si su frecuencia = la mitad de la longitud de la string, el resultado será Sí , de lo contrario , No.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> 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
<?php // PHP 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 function isFrequencyEqual($str, $len) { // If string is of odd length if ($len % 2 == 1) return false; // To store the frequency of each // character of the string $freq = array(); for($i = 0; $i < 26 ; $i++) $freq[$i] = 0; // Update the frequencies of the characters for($i = 0; $i < $len ; $i++) $freq[ord($str[$i]) - 97]++; for($i = 0; $i < 26 ; $i++) if ($freq[$i] == $len / 2) return true; // No such character exists return false; } // Driver code $str = "geeksforgeeks"; $len = strlen($str); if (isFrequencyEqual($str, $len)) echo "Yes"; else echo "No"; // This code is contributed by ihritik ?>
Javascript
<script> // Javascript 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 function isFrequencyEqual(str, len) { // If string is of odd length if (len % 2 == 1) return false; // To store the frequency of each // character of the string var i, freq=Array(26).fill(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] == parseInt(len / 2)) return true; // No such character exists return false; } // Driver code var str = "geeksforgeeks"; var len = str.length; if (isFrequencyEqual(str, len)) document.write("Yes"); else document.write("No"); // This code is contributed by noob2000. </script>
No
Complejidad de tiempo: O(len) donde len es la longitud de la string dada.