Dada una string de letras minúsculas str de longitud N , la tarea es reducirla eliminando los caracteres que aparecen exactamente K veces en la string.
Ejemplos:
Entrada: str = “geeksforgeeks”, K = 2
Salida: eeforee
Entrada: str = “geeksforgeeks”, K = 4
Salida: gksforgks
Acercarse:
- Cree una tabla hash de tamaño 26 , donde el índice 0 representa ‘a’ y el índice 1 representa ‘b’ y así sucesivamente.
- Inicialice la tabla hash a cero.
- Iterar a través de la string e incrementar la frecuencia de cada carácter ( s[i] ) en la tabla hash
- Ahora, una vez más, recorra la string y agregue los caracteres, con la frecuencia K, en la nueva string.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to remove characters from // a String that appears exactly K times #include <bits/stdc++.h> using namespace std; const int MAX_CHAR = 26; // Function to reduce the string by // removing the characters which // appears exactly k times string removeChars(char arr[], int k) { // Hash table initialised to 0 int hash[MAX_CHAR] = { 0 }; // Increment the frequency // of the character int n = strlen(arr); for (int i = 0; i < n; ++i) hash[arr[i] - 'a']++; // To store answer string ans = ""; // Next index in reduced string int index = 0; for (int i = 0; i < n; ++i) { // Append the characters which // appears exactly k times if (hash[arr[i] - 'a'] != k) { ans += arr[i]; } } return ans; } // Driver code int main() { char str[] = "geeksforgeeks"; int k = 2; // Function call cout << removeChars(str, k); return 0; }
Java
// Java program to remove characters from // a String that appears exactly K times import java.util.*; class GFG{ static int MAX_CHAR = 26; // Function to reduce the String by // removing the characters which // appears exactly k times static String removeChars(char arr[], int k) { // Hash table initialised to 0 int []hash = new int[MAX_CHAR]; // Increment the frequency // of the character int n = arr.length; for (int i = 0; i < n; ++i) hash[arr[i] - 'a']++; // To store answer String ans = ""; for (int i = 0; i < n; ++i) { // Append the characters which // appears exactly k times if (hash[arr[i] - 'a'] != k) { ans += arr[i]; } } return ans; } // Driver code public static void main(String[] args) { char str[] = "geeksforgeeks".toCharArray(); int k = 2; // Function call System.out.print(removeChars(str, k)); } } // This code is contributed by 29AjayKumar
Python3
# Python 3 program to remove characters from # a String that appears exactly K times MAX_CHAR = 26 # Function to reduce the string by # removing the characters which # appears exactly k times def removeChars(arr, k): # Hash table initialised to 0 hash = [0]*MAX_CHAR # Increment the frequency # of the character n = len(arr) for i in range( n): hash[ord(arr[i]) - ord('a')] += 1 # To store answer ans = "" # Next index in reduced string index = 0 for i in range(n): # Append the characters which # appears exactly k times if (hash[ord(arr[i]) - ord('a')] != k): ans += arr[i] return ans # Driver code if __name__ =="__main__": str = "geeksforgeeks" k = 2 # Function call print(removeChars(str, k)) # This code is contributed by chitranayal
C#
// C# program to remove characters from // a String that appears exactly K times using System; class GFG{ static int MAX_CHAR = 26; // Function to reduce the String by // removing the characters which // appears exactly k times static String removeChars(char []arr, int k) { // Hash table initialised to 0 int []hash = new int[MAX_CHAR]; // Increment the frequency // of the character int n = arr.Length; for (int i = 0; i < n; ++i) hash[arr[i] - 'a']++; // To store answer String ans = ""; for (int i = 0; i < n; ++i) { // Append the characters which // appears exactly k times if (hash[arr[i] - 'a'] != k) { ans += arr[i]; } } return ans; } // Driver code public static void Main(String[] args) { char []str = "geeksforgeeks".ToCharArray(); int k = 2; // Function call Console.Write(removeChars(str, k)); } } // This code is contributed by 29AjayKumar
Javascript
<script> // Javascript program to remove characters from // a String that appears exactly K times let MAX_CHAR = 26; // Function to reduce the String by // removing the characters which // appears exactly k times function removeChars(arr, k) { // Hash table initialised to 0 let hash = Array.from({length: MAX_CHAR}, (_, i) => 0); // Increment the frequency // of the character let n = arr.length; for (let i = 0; i < n; ++i) hash[arr[i].charCodeAt() - 'a'.charCodeAt()]++; // To store answer let ans = ""; for (let i = 0; i < n; ++i) { // Append the characters which // appears exactly k times if (hash[arr[i].charCodeAt() - 'a'.charCodeAt()] != k) { ans += arr[i]; } } return ans; } // Driver code let str = "geeksforgeeks".split(''); let k = 2; // Function call document.write(removeChars(str, k)); </script>
Producción:
eeforee
Complejidad de tiempo: O(N)
Publicación traducida automáticamente
Artículo escrito por muskan_garg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA