题解 | #名字的漂亮度#

名字的漂亮度

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);
        }
    }
}

全部评论

相关推荐

头像
03-30 21:02
已编辑
武汉大学 Java
ALEX_BLX:虽然说聊天记录不可信,不过这个趋势确实如此但我觉得也要想到一点就是卷后端的人里真正有“料”的人又有多少,我说的这个料都不是说一定要到大佬那种级别,而是就一个正常的水平。即使是现在也有很多人是跟风转码的,2-3个月速成后端技术栈的人数不胜数,但今时不同往日没可能靠速成进大厂了。这种情况就跟考研一样,你能上考场就已经打败一半的人了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务