# Remove characters from a String that appears exactly K times

Given a string of lowercase letters str of length N, the task is to reduce it by removing the characters which appear exactly K times in the string.

Examples:

Input: str = “geeksforgeeks”, K = 2
Output: eeforee

Input: str = “geeksforgeeks”, K = 4
Output: gksforgks

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

• Create a hash table of size 26, where 0th index represents ‘a’ and 1st index represent ‘b’ and so on.
• Initialize the hash table to zero.
• Iterate through the string and increment the frequency of each character(s[i]) in the hash table
• Now, once again traverse through the string and append the characters, with frequency K, in the new string.

Below is the implementation of the above approach:

 `// C++ program to remove characters from ` `// a String that appears exactly K times ` ` `  `#include ` `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 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 `

 `# 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# 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 `

Output:
```eeforee
```

Time Complexity: O(N)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

Article Tags :
Practice Tags :