Frequency of each character in a String using unordered_map in C++

Given a string str, the task is to find the frequency of each character of a string using an unordered_map in C++ STL.

Examples:

Input: str = “geeksforgeeks”
Output:
r 1
e 4
s 2
g 2
k 2
f 1
o 1

Input: str = “programming”
Output:
n 1
i 1
p 1
o 1
r 2
a 1
g 2
m 2

Approach:



  1. Traverse each character of the given string str.
  2. Check whether the current character is present in unordered_map or not.
  3. If it is present, then update the frequency of the current characters else insert the characters with frequency 1 as shown below:
    if(M.find(s[i])!=M.end()) {
        M.insert(make_pair{s[i], 1});
    }
    else {
        M[s[i]]++;
    }
    
  4. Traverse the unordered_map and print the frequency of each characters stored as a mapped value.

Below is the implementation of the above approach:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program for the above approach
  
#include <bits/stdc++.h>
using namespace std;
  
void printFrequency(string str)
{
    // Define an unordered_map
    unordered_map<char, int> M;
  
    // Traverse string str check if
    // current character is present
    // or not
    for (int i = 0; str[i]; i++) {
  
        // If the current characters
        // is not found then insert
        // current characters with
        // frequency 1
        if (M.find(str[i]) == M.end()) {
            M.insert(make_pair(str[i], 1));
        }
  
        // Else update the frequency
        else {
            M[str[i]]++;
        }
    }
  
    // Traverse the map to print the
    // frequency
    for (auto& it : M) {
        cout << it.first << ' '
             << it.second << '\n';
    }
}
  
// Driver Code
int main()
{
    string str = "geeksforgeeks";
  
    // Function call
    printFrequency(str);
    return 0;
}

chevron_right


Output:

r 1
e 4
s 2
g 2
k 2
f 1
o 1

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.