Frequency of each character in a String using unordered_map in C++
Last Updated :
26 Oct, 2020
Improve
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 1Input: str = "programming"
Output:
n 1
i 1
p 1
o 1
r 2
a 1
g 2
m 2
Approach:
- Traverse each character of the given string str.
- Check whether the current character is present in unordered_map or not.
- 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:
// 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;
}
Output
r 1 e 4 s 2 g 2 k 2 f 1 o 1