Related Articles
Remove characters from a String that appears exactly K times
• Difficulty Level : Easy
• Last Updated : 21 Apr, 2020

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)

My Personal Notes arrow_drop_up