输入一行字符(最多30个),以#号结尾,按照这一行字符中每种字符出现的次数,从小到大输出字符及其出现次数。次数相同则字符编码小的先输出。格式提醒,每行按照先字符,后次数的顺序输出,每个信息项后都有空格,每种字符占一行。c++实现
时间: 2024-03-25 17:36:44 浏览: 39
C++计算每个字符出现的次数
5星 · 资源好评率100%
好的,这是一个统计字符出现次数的问题,下面是使用 C++ 实现的代码:
```cpp
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
int main() {
string s;
getline(cin, s); // 读取一行字符串
map<char, int> mp; // 存储字符出现次数
for (int i = 0; i < s.size(); i++) {
if (s[i] == '#') {
break; // 遇到 # 号退出循环
}
mp[s[i]]++; // 统计字符出现次数
}
// 按要求排序
vector<pair<char, int>> v(mp.begin(), mp.end());
sort(v.begin(), v.end(), [](pair<char, int>& a, pair<char, int>& b) {
if (a.second != b.second) {
return a.second < b.second;
}
return a.first < b.first;
});
// 输出结果
for (int i = 0; i < v.size(); i++) {
cout << v[i].first << " " << v[i].second << endl;
}
return 0;
}
```
这段代码中,我们首先使用 `getline` 函数读取用户输入的一行字符串,并遍历每个字符,将其出现次数存储在 `map` 容器中。接着,我们将 `map` 容器中的键值对转换为 `vector`,并按照要求排序。
在排序函数中,我们首先按照出现次数排序,如果出现次数相同,则按照字符编码排序。最后,我们遍历排序后的结果,输出每个字符及其出现次数。
需要注意的是,我们在输出结果时,每种字符占一行,所以需要在输出后加上换行符 `\n`。
阅读全文