题解 | #简单错误记录#
简单错误记录
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++; } } }