题解 | #简单错误记录#

简单错误记录

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());
                    }
            }
            
        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务