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

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务