Skip to content
Related Articles
Remove characters from a String that appears exactly K times
• Difficulty Level : Easy
• Last Updated : 24 May, 2021

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

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`

## Javascript

 ``
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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live

My Personal Notes arrow_drop_up