import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = Integer.parseInt(in.nextLine());
        List<String> names = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            names.add(in.nextLine());
        }
        for (String name : names) {
            System.out.println(CalBeauty(name));
        }
    }

    public static int CalBeauty(String name) {
        int[] charNum = new int[26];
        for (int i = 0; i < name.length(); i++) {
            char c = name.charAt(i);
            charNum[c - 'a']++;
        }
        Arrays.sort(charNum);
        int beauty = 0;
        for (int i = 26; i > 0; i--) {
            int n = charNum[i - 1];
            if (n == 0) {
                //快速结束.
                break;
            }
            beauty += i * n;
        }
        return beauty;
    }
}

还有这么简单的贪心题目!

类似哈夫曼编码思想,把出现最多的字母赋最大的漂亮值,把出现次最多的字母赋次最大的漂亮值,直到26个字母都分配完毕~