题解 | #名字的漂亮度#
名字的漂亮度
https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
#include <stdio.h>
#include<string.h>
#include<ctype.h>
//只需要让出现次数最多的字母对应26,次多的字母对应25....以此类推,即可以得到最大的答案
int main()
{
int N;//整数N,后续N个名字
char str[100000];
int length;
int temp;
int sum;
while(scanf("%d\n",&N)!=EOF)
{
for(int n=1;n<=N;n++)
{
scanf("%s\n",str);
length=strlen(str);
sum=0;
//统计每个字符的数量 初始化为0
int arr[26]={0};
//检测字符是什么
for(int i=0;i<length;i++) //我们只需要知道不同字符出现的次数,甚至都不需要知道次数对应的是什么字符;
{
//str[i]=toupper(str[i]);
arr[str[i]-'a']++; //统计次数
}
//冒泡
for(int i=0;i<26-1;i++)
{
for(int j=0;j<26-1-i;j++)
{
if(arr[j]<arr[j+1]) //从大到小排列
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;i<26;i++)
{
sum=sum+(arr[i]*(26-i)); //最多的*26,依次递减
}
printf("%d\n",sum);
}
}
return 0;
}
