题解 | #名字的漂亮度#

名字的漂亮度

https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            in.nextLine();
            for(int i = 0; i < n; i++){ 
                // int beauty = getBeauty(in.nextLine());
                System.out.println(getBeauty(in.nextLine()));
            }

        }
    }

    private static int getBeauty(String s){
        Map<Character, Integer> map = new HashMap<Character, Integer>();
        for(char c :s.toCharArray()){
            c = Character.toLowerCase(c);
            map.put(c, map.getOrDefault(c,0) + 1);
        }
        //将map放入List中,根据value值排序
        List<Map.Entry<Character,Integer>> entryList = new ArrayList<>(map.entrySet());
        //排序
        Collections.sort(entryList, new Comparator<Map.Entry<Character, Integer>>(){
            @Override
            public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2){
                return o2.getValue() - o1.getValue();
            }
        });

        //排好序后,需要使用LinkedHashMap<Character, Integer> 来保准数据, 不过这里只需要保存value的值即可
        int sum = 0;
        int beauty = 26;
        for(Map.Entry<Character, Integer> m : entryList){
            sum += beauty * m.getValue();
            beauty--;
        }
        return sum;
    }
}

全部评论

相关推荐

01-04 07:53
门头沟学院 C++
心愿便利贴:工作了以后回头再看待这个问题,从客观的视角来讲是因为每个人对自己的要求不同,学习好的人对自己的要求很高,所以觉得考不好就天塌了,认为自己学习好并且值得一份好工作的人也是一样,找不到符合自己预期的工作肯定也会觉得是侮辱,牛客上有很多名校大学生,肯定会存在这种好学生心态啊,“做题区”从来都不是贬义词,这是大部分普通人赖以生存的路径,这个有什么好嘲讽的,有“好学生心态”没有错,但是不要给自己太大的压力了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务