题解 | #名字的漂亮度#

名字的漂亮度

https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 1. 得到字符串
// 2. 统计每个字母出现的频数
// 3. 根据频数计算出漂亮度

int mycmp(const void *p1, const void *p2)
{
    int a = *((const int *)p1);
    int b = *((const int *)p2);

    return a-b;
    
}

int main() {
    
    int n = 0;
    char name[10010] = {0};
    
    int alpha[26] = {0};
    int len = 0;
    int sum = 0;

    scanf("%d", &n);
    for(int i = 0; i < n; ++ i)
    {
        scanf("%s", name);
        
        memset(alpha, 0, sizeof(alpha));
        len = strlen(name);
        sum = 0;

        for(int j = 0; j < len; ++ j)
        {
            ++ alpha[name[j] - 'a'];
        }

        qsort(alpha, 26, sizeof(alpha[0]), mycmp);
        //不关心哪是哪一个字母出现最多次,只需要知道这个字母的度为26即可,按照频数排序,出现次数最低的为1,最高的为26
        for(int beaty = 1; beaty <= 26; ++ beaty)
        {
            sum += (beaty * alpha[beaty-1]);
        }

        printf("%d\n", sum);
    }

    return 0;
}

全部评论

相关推荐

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