题解 | #名字的漂亮度#
名字的漂亮度
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;
}
查看20道真题和解析