Remove odd frequency characters from the string
Given string str of size N, the task is to remove all the characters from the string that have odd frequencies.
Examples:
Input: str = “geeksforgeeks”
Output: geeksgeeks
The characters f, o, r have odd frequencies
So, they are removed from the string.Input: str = “zzzxxweeerr”
Output: xxrr
Approach:
- Create a map and store the frequency of each character from the string to the same map.
- Then, traverse the string and find out which characters have odd frequencies with the help of the map.
- Ignore all those characters which have odd frequencies and store the rest in a new string.
- Finally, display the new string.
Below is the implementation of the above approach:
C++
// C++ program to remove the characters // having odd frequencies in the string #include <bits/stdc++.h> using namespace std; // Function to remove the characters which // have odd frequencies in the string string removeOddFrequencyCharacters(string s) { // Create a map to store the // frequency of each character unordered_map< char , int > m; for ( int i = 0; i < s.length(); i++) { m[s[i]]++; } // To store the new string string new_string = "" ; // Remove the characters which // have odd frequencies for ( int i = 0; i < s.length(); i++) { // If the character has // odd frequency then skip if (m[s[i]] & 1) continue ; // Else concatenate the // character to the new string new_string += s[i]; } // Return the modified string return new_string; } // Driver code int main() { string str = "geeksforgeeks" ; // Remove the characters which // have odd frequencies str = removeOddFrequencyCharacters(str); cout << str << "\n" ; return 0; } |
Java
// Java program to remove the characters // having odd frequencies in the string import java.util.*; class GFG { // Function to remove the characters which // have odd frequencies in the string static String removeOddFrequencyCharacters(String s) { // Create a map to store the // frequency of each character HashMap<Character, Integer> m = new HashMap<Character,Integer>(); for ( int i = 0 ; i < s.length(); i++) { char p = s.charAt(i); Integer count = m.get(p); if ( count == null ) { count= 0 ; m.put(p, 1 ); } else m.put(p,count + 1 ); } // To store the new string String new_string = "" ; // Remove the characters which // have odd frequencies for ( int i = 0 ; i < s.length(); i++) { // If the character has // odd frequency then skip if ((m.get(s.charAt(i))& 1 )== 1 ) continue ; // Else concatenate the // character to the new string new_string += s.charAt(i); } // Return the modified string return new_string; } // Driver code public static void main(String []args) { String str = "geeksforgeeks" ; // Remove the characters which // have odd frequencies str = removeOddFrequencyCharacters(str); System.out.print(str); } } // This is contributed by chitranayal |
Python3
# Python3 program to remove the characters # having odd frequencies in the string # Function to remove the characters which # have odd frequencies in the string def removeOddFrequencyCharacters(s): # Create a map to store the # frequency of each character m = dict () for i in s: m[i] = m.get(i, 0 ) + 1 # To store the new string new_s = "" # Remove the characters which # have odd frequencies for i in s: # If the character has # odd frequency then skip if (m[i] & 1 ): continue # Else concatenate the # character to the new string new_s + = i # Return the modified string return new_s # Driver code if __name__ = = '__main__' : str = "geeksforgeeks" # Remove the characters which # have odd frequencies str = removeOddFrequencyCharacters( str ) print ( str ) # This code is contributed by mohit kumar 29 |
C#
// C# program to remove the characters // having odd frequencies in the string using System; using System.Collections.Generic; class GFG{ // Function to remove the characters which // have odd frequencies in the string static string removeOddFrequencyCharacters( string s) { // Create a map to store the // frequency of each character Dictionary< char , int > m = new Dictionary< char , int >(); for ( int i = 0; i < s.Length; i++) { char p = s[i]; if (m.ContainsKey(p)) { m[p]++; } else { m[p] = 1; } } // To store the new string string new_string = "" ; // Remove the characters which // have odd frequencies for ( int i = 0; i < s.Length; i++) { // If the character has // odd frequency then skip if ((m[s[i]] & 1) == 1) continue ; // Else concatenate the // character to the new string new_string += s[i]; } // Return the modified string return new_string; } // Driver code public static void Main( string []args) { string str = "geeksforgeeks" ; // Remove the characters which // have odd frequencies str = removeOddFrequencyCharacters(str); Console.Write(str); } } // This code is contributed by rutvik_56 |
Javascript
<script> // Javascript program to remove the characters // having odd frequencies in the string // Function to remove the characters which // have odd frequencies in the string function removeOddFrequencyCharacters(s) { // Create a map to store the // frequency of each character let m = new Map(); for (let i = 0; i < s.length; i++) { let p = s[i]; let count = m.get(p); if ( count == null ) { count=0; m.set(p,1); } else m.set(p,count + 1); } // To store the new string let new_string = "" ; // Remove the characters which // have odd frequencies for (let i = 0; i < s.length; i++) { // If the character has // odd frequency then skip if ((m.get(s[i])& 1)==1) continue ; // Else concatenate the // character to the new string new_string += s[i]; } // Return the modified string return new_string; } // Driver code let str = "geeksforgeeks" ; // Remove the characters which // have odd frequencies str = removeOddFrequencyCharacters(str); document.write(str); </script> |
Output:
geeksgeeks
Time Complexity: O(n), where n is the length of the given string.
Auxiliary Space: O(n)
Please Login to comment...