题解 | #简单错误记录#

简单错误记录

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

全部评论

相关推荐

求面试求offer啊啊啊啊:把华北改为华南再试一试,应该就没啥问题了。改完可能都不用投,别人主动联系了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务