华为机试 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")