Frecuencia de cada carácter en una String usando unordered_map en C++

Dada una string str , la tarea es encontrar la frecuencia de cada carácter de una string usando un mapa_desordenado en C++ STL .

Ejemplos: 

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

Entrada: str = “programación” 
Salida: 
n 1 
i 1 
p 1 
o 1 
r 2 
a 1 
g 2 
m 2 

Acercarse: 

  1. Recorre cada carácter de la string dada str .
  2. Compruebe si el carácter actual está presente en unordered_map o no.
  3. Si está presente, actualice la frecuencia de los caracteres actuales; de lo contrario, inserte los caracteres con frecuencia 1 como se muestra a continuación: 
if(M.find(s[i])==M.end()) {
    M.insert(make_pair{s[i], 1});
}
else {
    M[s[i]]++;
}

        4. Atraviese unordered_map e imprima la frecuencia de cada carácter almacenado como un valor asignado.

A continuación se muestra la implementación del enfoque anterior:

CPP

// 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;
}
Producción

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

Publicación traducida automáticamente

Artículo escrito por hrishikeshkonderu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *