题解 | #简单错误记录#
简单错误记录
https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
while(in.hasNextLine()){
String input = in.nextLine();
String[] path = input.split("\\\\");//按照\分割
String[] last = path[path.length-1].split(" ");//将最后的数字和字母分割
StringBuilder error1 = new StringBuilder(last[0].length()>16?last[0].substring(last[0].length()-16):last[0]);//删除超过16的字母
String error = error1.append(" "+last[1]).toString();//拼接数字
linkedHashMap.put(error, linkedHashMap.getOrDefault(error, 0)+1); //保持有插入顺序
}
int count=linkedHashMap.size()>8?linkedHashMap.size()-8:0;
for(String key : linkedHashMap.keySet()){
if(count-- > 0) continue; //跳过最先超过八个的
System.out.println(key+" "+linkedHashMap.get(key));
}
}
}
查看30道真题和解析