牛客 -- 名字的漂亮度

题目描述

给出一个名字,该名字有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);
    }
}
点赞