设计一个c++程序完成以下问题, 给出一个字符串(长度<10000),统计其中四个字母(b、m..P: )出现的次数,并按出现次数降序输出字母和该字母的出现次数 (不区分大小写),如果两个字母的出现次数一样,则按照字母 升序辆出。 输入说明:一个字符串。 以单个空格分隔。 输出说明:分4行输出,每个字母一行。格式为字母和出现次数,
时间: 2024-03-11 08:47:36 浏览: 19
统计字符串中字母和数字个数
这个问题和上一个问题重复了,下面是一个参考解答:
```c++
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
string s;
getline(cin, s);
int freq[4] = {0};
for(int i=0; i<s.length(); i++)
{
if(s[i] == 'b' || s[i] == 'm' || s[i] == 'p' || s[i] == ':')
freq[s[i]-'b']++;
else if(s[i] == 'B' || s[i] == 'M' || s[i] == 'P' || s[i] == ':')
freq[s[i]-'B']++;
}
pair<char, int> p[4];
for(int i=0; i<4; i++)
p[i] = make_pair('b'+i, freq[i]);
sort(p, p+4, [](pair<char, int> a, pair<char, int> b){
if(a.second == b.second) return a.first < b.first;
else return a.second > b.second;
});
for(int i=0; i<4; i++)
cout << p[i].first << " " << p[i].second << endl;
return 0;
}
```
阅读全文