给定字符串str ,任务是使用C++ STL中的unordered_map查找字符串每个字符的频率。
例子:
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
方法:
- 遍历给定字符串str的每个字符。
- 检查当前字符是否存在于unordered_map中。
- 如果存在,则更新当前字符的频率,否则插入频率为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等的更多准备工作,请参阅“完整面试准备课程” 。