题解 | #简单错误记录#
简单错误记录
https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
/**
* 1.相同的记录:文件名相同,行数相同.此时集合中的文件的出现顺序不变
* 2.文件名超过16个字符时,仍然以最后16个字符为准
* 3.当记录条数多于8,输出最后8条
* 4.用linkedhashmap
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
LinkedHashMap<String,Integer> lm=new LinkedHashMap<>();
while (sc.hasNextLine()){ //牛客会终止
String s= sc.nextLine();
String[] split = s.substring(3).split("\\\\");
String s1=split[split.length - 1];
String[] s2 = s1.split(" ");
if(s2[0].length()>16) s2[0]=s2[0].substring(s2[0].length() - 16);
//s2[0]:名字,s2[1]:行数
String key=s2[0]+" "+s2[1];
if(!lm.containsKey(key))
lm.put(key,1);
else
lm.put(key,lm.get(key)+1);
}
if(lm.size()<=8){
lm.forEach((key,value)->{
String[] s = key.split(" ");
System.out.println(s[0]+" "+s[1]+" "+value);
});
}else{
Set<Map.Entry<String, Integer>> entries = lm.entrySet();
int i=0;
for (Map.Entry<String, Integer> entry : entries) {
i++;
if(i>lm.size()-8){
String[] s = entry.getKey().split(" ");
System.out.println(s[0]+" "+s[1]+" "+ entry.getValue());
}
}
}
}
}
深信服公司福利 809人发布

