华为机试 HJ102题解 | #字符统计#
字符统计
https://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0
#include <iostream>
#include <string>
#include <vector>
#include <bits/stdc++.h>
#include <map>
#include <unordered_map>
#include <algorithm>
using namespace std;
bool cmp(std::pair<char, int> lhs, std::pair<char, int> rhs) {
// 字符个数不相等,则按照不同字母出现次数的降序表示
if (lhs.second != rhs.second) {
return lhs.second > rhs.second;
}
// 若出现次数相同,则按ASCII码的升序输出
return lhs.first < rhs.first;
}
int main() {
string strLine;
while (getline(cin, strLine)) { // 注意 while 处理多个 case
unordered_map<char, int> charCntMap;
for (char ch : strLine) {
charCntMap[ch]++;
}
std::vector<std::pair<char, int>> myVec;
for (auto iter : charCntMap) {
myVec.emplace_back(iter);
}
std::sort(myVec.begin(), myVec.end(), cmp);
// 输出myVec中的字符出现的个数
for (auto item : myVec) {
std::cout << item.first;
}
std::cout << std::endl;
}
return 0;
}
// 64 位输出请用 printf("%lld")
