题目要求: 给出一个字符串(长度<10000),统计其中四个字母(b、m、p、t)出现的次数, 并按出现次数降序输出字母和该字母的出现次数(不区分大小写), 如果两个字母的出现次数一样,则按照字母升序输出。 输入说明:一个字符串。 输出说明:分4行输出,每个字母一行。格式为字母和出现次数,以单个空格分隔。
时间: 2024-03-12 14:46:51 浏览: 91
好的,以下是我为您编写的C++程序,可以满足您的要求:
```c++
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
struct Alpha {
char c;
int cnt;
};
bool cmp(Alpha a, Alpha b) {
if (a.cnt == b.cnt) {
return a.c < b.c;
}
return a.cnt > b.cnt;
}
int main() {
string s;
getline(cin, s);
int bCnt = 0, mCnt = 0, pCnt = 0, tCnt = 0;
for (char c : s) {
if (c == 'b' || c == 'B') {
bCnt++;
} else if (c == 'm' || c == 'M') {
mCnt++;
} else if (c == 'p' || c == 'P') {
pCnt++;
} else if (c == 't' || c == 'T') {
tCnt++;
}
}
vector<Alpha> alphas = {{'B', bCnt}, {'M', mCnt}, {'P', pCnt}, {'T', tCnt}};
sort(alphas.begin(), alphas.end(), cmp);
for (Alpha alpha : alphas) {
cout << alpha.c << ' ' << alpha.cnt << endl;
}
return 0;
}
```
这个程序首先读入一个字符串,然后遍历字符串中每个字符,统计四个字母出现的次数。然后把这些字母和它们的出现次数存储在一个自定义结构体Alpha的vector中,并按照要求进行排序。最后按照排序后的顺序输出字母和出现次数。
阅读全文