java题目 HJ45 名字的漂亮度


描述

给出一个名字,该名字有26个字符组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个不同字母拥有相同的“漂亮度”。字母忽略大小写。

给出多个名字,计算每个名字最大可能的“漂亮度”。   本题含有多组数据。   数据范围:输入的名字长度满足 1 \le n \le 10000 \1n10000 

输入描述:

整数N,后续N个名字

输出描述:

每个名称可能的最大漂亮程度

示例1

输入:
2
zhangsan
lisi
输出:
192
101
 1 import java.io.*;
 2 import java.util.*;
 3 
 4 public class Main {
 5  public static void main(String[] args) throws IOException {
 6 //      Scanner in = new Scanner(System.in);
 7      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 8      String s="";
 9      while((s = br.readLine()) != null) {
10          int n = Integer.parseInt(s);
11          for(int i=0;i){
12              System.out.println(getScore(br.readLine()));
13          }
14      }
15  }
16     
17  // 计算漂亮度
18     public static int getScore(String name) {
19         int score =0;
20         char[] ch = name.toCharArray();
21         int[] count = new int[26];
22         
23         //转换为小写,对应位置字符出现的次数统计
24         for(int i=0; i) {
25             Character.toLowerCase(ch[i]);
26             count[ch[i] - 'a']++; 
27         }
28         
29         Arrays.sort(count); //升序
30         
31         //计算漂亮度
32         for(int i=1; i<=26;i++) {
33             score = score + i*count[i-1];
34         }
35         return score;
36     }
37 }