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: eeforeeInput: 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 <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;
} |
chevron_right
filter_none
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 |
chevron_right
filter_none
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 |
chevron_right
filter_none
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 |
chevron_right
filter_none
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.