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