题目链接:字符统计_牛客题霸_牛客网
注意点:
1.最适合选取的是map或者unordered_map
2.依据本题的意思,sort排序无法对相同字符的数据进行排序
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
bool cmp(pair<char, int> a, pair<char, int> b){
//出现次数相同的时候,返回ASCII码小的那个
if(a.second == b.second) return a.first < b.first;
//否则返回出现次数多的那个字符
else return a.second > b.second;
}
int main(){
string str;
map<char,int> mp;
while(getline(cin, str)){
//统计每个出现的次数
for(int i = 0; i< str.size(); ++i){
mp[str[i]]++;
}
vector<pair<char, int> > vec(mp.begin(), mp.end());
sort(vec.begin(),vec.end(),cmp);
for(auto i : vec){
cout << i.first ;
}
mp.clear();
cout << endl;
}
return 0;
}
|