从字符串中,提取相应字符出现的个数,并且计算重要度。\n 如:aabbccdef,字符已经出现的个数分别是: a - 2,b - 2, c - 2, d - 1,e - 1,f - 1\n 上面只是一个距离,序列是要根据出现的个数进行排序的,所以对应的漂亮度:26,25,。。。。\n 然后计算最终结果:2 * 26 + 2 * 25 + 2 * 24 + 23 * 1 + 22 * 1 + 21 * 1\n

  1. 输入目标串,转换成小写,然后遍历,逐一添加到HashSet,如果hashSet.add()返回的是true,也就是能够添加,这个时候添加到Map集合中,Map集合存储的是对应的字符和出现的个数。如果返回的是false,那么就将map集合中的字符出现的个数+1\n
  2. 遍历map集合,将得到的字符出现的个数添加到list集合中去\n
  3. 重写list.sort的排序规则\n
  4. 遍历list集合并且计算漂亮度的结果即可。\n

import javax.swing.*;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        // 名字的漂亮度,一个串中,出现最多次数的字母,漂亮度为26,次数相同,则随机分配,如a,b出现两次,则25,24
        Scanner sc = new Scanner(System.in);
//        System.out.println((int)'a');


        // 输入一个整数N,后续N个名字
        while(sc.hasNext()){
            int numbers = sc.nextInt();
            int sum = 0;// 存放漂亮度
            // 使用list集合来保存即可,下标就是字母对应的1-26,然后值是出现的次数。
            Map<Character,Integer> map = new HashMap<>();// 保证插入次序

            String s2 = sc.nextLine();// 接收后面的那个换行
            // 存放输入的串
            List<String> list = new ArrayList<>();
            for(int i = 1; i <= numbers; i++) {
                HashSet<Character> hs = new HashSet<>();
                StringBuffer bf = new StringBuffer(sc.nextLine().toLowerCase());// 用来保存输入的目标串
                for (int j = 0; j < bf.length(); j++) {
                    // 写入map集合,value是对应的次数
                    if (hs.add(bf.charAt(j))) // 如果hashSet能加入成功,就说明在map中还没有
                        map.put(bf.charAt(j), 1);
                    else // 原来有
                        map.put(bf.charAt(j), map.get(bf.charAt(j)) + 1);
                }
                // 计算漂亮度,每次都找到最大的
                int finalSum = 0;
                int max = -1;
                int chushi = 26;
                List<Integer> listRes = new ArrayList<>();
                    for (Character c : map.keySet()) {
                        listRes.add(map.get(c));// 把出现的权重值加入到list集合里面去
                    }
                // 给list集合设置排序规则
                listRes.sort(new Comparator<Integer>() {
                    @Override
                    public int compare(Integer o1, Integer o2) {
                        return o2 - o1;
                    }
                });
                for(int k = 0; k < listRes.size();k++) {
                    finalSum += listRes.get(k) * (chushi - k );// 计算结果
                }

                System.out.println(finalSum);
                map.clear();
            }



            }



        }
    }