Skip to content
Related Articles

Related Articles

Improve Article

Remove odd frequency characters from the string

  • Last Updated : 24 May, 2021
Geek Week

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

 

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :