题解 | #简单错误记录#

简单错误记录

https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别

        // Key:  最后16位斜杠后面的后缀 + 行号
        // Value: 错误出现的次数
        LinkedHashMap<String, Integer> counts = new LinkedHashMap<>();
        while (in.hasNext()) { // 注意 while 处理多个 case
            String record = in.next();
            int rowNum = in.nextInt();

            // 对数据进行整理以生成Key并添加进LinkedHashMap
            String[] contents = record.split("\\\\");
            String fileName = contents[contents.length - 1];
            String keyVal = fileName.length() > 16 ? 
                            fileName.substring(fileName.length() - 16) : fileName;

            String key = keyVal + " " + rowNum;
            if (!counts.containsKey(key))  counts.put(key, 1);
            else  counts.put(key, counts.get(key) + 1);
        }
        // 读取最后8条错误记录
        int count = 0;
        for (String key: counts.keySet()) {
            if (count >= counts.size() - 8) {
                System.out.println(key + " " + counts.get(key));
            }
            count++;
        }
    }
}

全部评论

相关推荐

03-03 23:42
复旦大学 Java
_无论云泥意贯一:把复旦大学放前面,山东大学放后面,并且在两个大学后面标注985(用一些显眼的颜色标注)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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