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


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Output: 

geeksgeeks


 

Rated as one of the most sought after skills in the industry, own the basics of coding with our C++ STL Course and master the very concepts by intense problem-solving.




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.