题解 | #字符统计#

字符统计

http://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0

#include <cstdio>
#include <algorithm>

using namespace std;

bool isNum(char ch) {
    return ch >= '0' && ch <= '9';
}

struct Pair {
    int cnt;
    char ch;
};
Pair arr[36];

void initArr() {
    for (int i = 0; i < 10; i++) {
        arr[i].ch = i + '0';
        arr[i].cnt = 0;
    }
    for (int i = 0; i < 26; i++) {
        arr[i + 10].ch = i + 'a';
        arr[i + 10].cnt = 0;
    }
}

bool myCmp(Pair a, Pair b) {
    if (a.cnt == b.cnt) {
        return a.ch < b.ch;
    } else {
        return a.cnt > b.cnt;
    }
}

int main() {
    initArr();
    char ch;
    while (EOF != scanf("%c", &ch)) {
        if (ch == '\n') {
            sort(arr, arr + 36, myCmp);
            for (int i = 0; i < 36; i++) {
                if (arr[i].cnt < 1) {
                    break;
                } else {
                    printf("%c", arr[i].ch);
                }
            }
            printf("\n");
            initArr();
        } else {
            if (isNum(ch)) {
                arr[ch - '0'].cnt++;
            } else {
                arr[ch - 'a' + 10].cnt++;
            }
        }
    }

    return 0;
}
全部评论

相关推荐

2025-12-04 15:36
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务