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

查看8道真题和解析