📜  在C++中使用unordered_map的字符串中每个字符的频率

📅  最后修改于: 2021-05-30 18:39:03             🧑  作者: Mango

给定字符串str ,任务是使用C++ STL中的unordered_map查找字符串每个字符的频率。

例子:

方法:

  1. 遍历给定字符串str的每个字符。
  2. 检查当前字符是否存在于unordered_map中。
  3. 如果存在,则更新当前字符的频率,否则插入频率为1的字符,如下所示:
if(M.find(s[i])==M.end()) {
    M.insert(make_pair{s[i], 1});
}
else {
    M[s[i]]++;
}

4.遍历unordered_map并打印存储为映射值的每个字符的频率。

下面是上述方法的实现:

CPP
// C++ program for the above approach
#include 
using namespace std;
 
void printFrequency(string str)
{
    // Define an unordered_map
    unordered_map 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;
}


输出
r 1
e 4
s 2
g 2
k 2
f 1
o 1
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”