题目描述
给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个名字,计算每个名字最大可能的“漂亮度”。
输入描述:
整数N,后续N个名字
输出描述:
每个名称可能的最大漂亮程度
示例1
- 输入
2
zhangsan
lisi
- 输出
192
101
AC代码
import java.util.Scanner;
import java.util.Arrays;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
int num = scanner.nextInt();
for(int i = 0;i < num;i++){
String s = scanner.next();
helper(s);
}
}
}
private static void helper(String s){
s = s.toLowerCase();
int[] chars = new int[26];
int i = 0;
for(;i < s.length();i++)
chars[s.charAt(i) - 'a']++;
Arrays.sort(chars);
int n = 26;
i = 25;
int res = 0;
while(i >= 0 && chars[i] != 0){
res += chars[i] * n--;
i--;
}
System.out.println(res);
}
}