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

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

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

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.

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : 29AjayKumar, chitranayal

Article Tags :
Practice Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.