题目描述
给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个名字,计算每个名字最大可能的“漂亮度”。
本题含有多组数据。
输入描述:
整数N,后续N个名字
输出描述:
每个名称可能的最大漂亮程度
import java.util.*;
import java.io.*;
public class Main
{
public static void getBeauty(String name)
{
char []arr = name.toCharArray();
int []nums = new int[27];//26个英文字母分别出现的次数
for(int i=0; i<arr.length; i++)
{
nums[arr[i] - 'a' + 1] += 1;
}
Arrays.sort(nums);
int beautiful = 0;
for(int i=nums.length - 1; i>0; i--)
{
beautiful += nums[i]*i;
}
System.out.println(beautiful);
}
public static void main(String []args)throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
while((str = br.readLine())!= null)
{
int num = Integer.parseInt(str);//读取名字个数
for(int i=0; i<num; i++)
{
String name = br.readLine();//读取名字
getBeauty(name);
}
}
}
}