题解 | #字符统计#

字符统计

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

这类题一个思路,用字符对应的ascii码做下标,按题目要求顺序打印就可以了。
for循环的i=1000,可以优化下取最多的字符次数,减少循环次数。tmp['z']也可以优化。
#include "stdio.h"
#include "string.h"

char str[1001] = {0};
int tmp['z'] = {0};

int main(void) {
    int i, j;

    scanf("%s", str);
    int len = strlen(str);
    for (i = 0; i < len; i++) {
        tmp[str[i]] ++;
    }

    for (i = 1000; i > 0; i--) {
        for (j = '0'; j <= '9'; j++) {
            if (tmp[j] == i) {
                printf("%c", j);
            }
        }
        for (j = 'a'; j <= 'z'; j++) {
            if (tmp[j] == i) {
                printf("%c", j);
            }
        }
    }

    return 0;
}


全部评论
int tmp['z'] = {0}; 是这个不能放在主函数里面
点赞 回复 分享
发布于 2022-06-09 19:27
char str[1001] = {0}; int tmp['z'] = {0}; 你好,这两个为啥不能放到主函数里面?我放到里面运行了下,发现字符串缺少最后一位z??? 感谢!!
点赞 回复 分享
发布于 2022-06-09 19:25

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-04 14:23
steelhead:你回的有问题,让人感觉你就是来学习的
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

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