用c++语言实现这个问题
时间: 2024-03-11 09:48:04 浏览: 31
好的,以下是 C++ 代码实现:
```c++
#include <iostream>
#include <string>
#include <algorithm>
#include <map>
using namespace std;
int main() {
string s;
getline(cin, s); // 输入字符串
transform(s.begin(), s.end(), s.begin(), ::tolower); // 转换为小写字母
map<char, int> count = {{'b', 0}, {'m', 0}, {'p', 0}}; // 统计字母出现次数
for (char c : s) {
if (count.count(c) > 0) {
count[c]++;
}
}
// 按出现次数降序排序,如果出现次数一样则按照宇母升序排序
vector<pair<char, int>> result(count.begin(), count.end());
sort(result.begin(), result.end(), [](pair<char, int>& a, pair<char, int>& b) {
if (a.second == b.second) {
return a.first < b.first;
}
return a.second > b.second;
});
// 输出结果
for (auto r : result) {
cout << r.first << " " << r.second << endl;
}
return 0;
}
```
先输入字符串并转换为小写字母,然后使用 map 统计字母 b、m、p 的出现次数。接着,将 map 转换为 vector,并使用 sort 函数进行排序,按照出现次数降序排列,如果出现次数一样则按照字母的顺序升序排列。最后,输出排序后的结果即可。
注意:本代码是 C++11 代码。