HJ102 字符统计 C++实现
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
string str = "";
map<char, int> strCountMap = {};
while (cin >> str) // 注意 while 处理多个 case
{
for (size_t i = 0; i < str.size(); i++) {
auto iter = strCountMap.find(str[i]);
if (iter == strCountMap.end()) {
strCountMap.insert(std::pair<char,int>(str[i], 1));
} else {
iter->second += 1;
}
}
// 对map中的元素按照个数进行降序排序
std::vector<std::pair<char, int>> resultVec(strCountMap.begin(), strCountMap.end());
std::sort(resultVec.begin(), resultVec.end(),
[](const std::pair<char, int> left ,const std::pair<char, int> right) {
if (left.second == right.second) {
return left.first < right.first;
}
return left.second > right.second;
});
for (auto iter : resultVec) {
cout << iter.first;
}
cout << std::endl;
}
return 0;
}