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

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


Output:

geeksgeeks

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

Recommended Posts:


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.