题解 | #名字的漂亮度#

名字的漂亮度

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

核心思想:

1.先把每个字符出现的次数统计出来

2.将出现次数从大到小排序

3.从26漂亮度开始倒退乘以 前面的排序



import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        for (int j = 0; j < n; j++) {
            String string = in.next();
            // 统一转成小写
            char[] charArray = string.toLowerCase().toCharArray();
            // 每个字符和对应的出现次数
            HashMap<Character, Integer> hashMap = new HashMap<>();
            for (int i = 0; i < charArray.length; i++) {
                int count = 1;
                
                if (hashMap.get(charArray[i]) != null){
                    continue;
                }
                for (int k = i + 1; k < charArray.length; k++) {
                    if (charArray[i] == charArray[k]) {
                        count++;
                    }
                }
                hashMap.putIfAbsent(charArray[i], count);
            }

            ArrayList<Integer> countList = new ArrayList<>();

            Iterator<Map.Entry<Character, Integer>> iterator = hashMap.entrySet().iterator();
            while (iterator.hasNext()) {
                Map.Entry<Character, Integer> entry = iterator.next();
                countList.add(entry.getValue());
            }
            // 根据出现次数降序排
            Collections.sort(countList, new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return o2 - o1;
                }
            });

            // 最大漂亮程度 = 出现次数 * 最大漂亮度
            int good = 0;
            // 从26最大往小
            int max = 26;
            for (Integer count : countList) {
                // 漂亮度 = 每个字符的漂亮度 之和
                good = good + (max * count);
                max--;
            }

            System.out.println(good);
        }
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 14:32
点赞 评论 收藏
分享
06-26 22:20
门头沟学院 Java
码农索隆:让你把简历发给她,她说一些套话,然后让你加一个人,说这个人给你改简历,然后开始卖课
我的求职精神状态
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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