题解 | #名字的漂亮度#
名字的漂亮度
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;
}
