题解 | 简单错误记录

import java.util.Scanner;

import java.util.List;
import java.util.Optional;
import java.util.LinkedList;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        LinkedList<Thing> queue = new LinkedList<>();
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String a = in.nextLine();
            Thing t = new Thing(a);
            Optional<Thing> optional = queue.stream().filter(e -> e.key.equals(t.key)).findFirst();
            if(optional.isPresent()) {
                optional.get().add();
            } else {
                queue.push(t);
            }
        }
        int a = 0;
        LinkedList<Thing> result = new LinkedList<>();
        while(!queue.isEmpty()){
            result.push(queue.pop());
            if(result.size() == 8) {
                break;
            }
        }
        while(!result.isEmpty()) {
            System.out.println(result.pop().format());
        }

    }

    public static class Thing {
        public String key;
        public int num;
        public Thing(String a) {
            String k = a.substring(a.lastIndexOf("\\") + 1);
            String m = k.substring(0, k.lastIndexOf(" "));
            if (m.length() > 16) {
                k = k.substring(k.lastIndexOf(" ") - 16);
            }
            this.key = k;
            this.num = 1;
        }

        public void add() {
            this.num ++;
        }
        public String format() {
            return key + " " + num;
        }
    }

}

考察数据结构的运用,程序要求输出最后的8条记录,考虑试用栈先进后出的特性,试用第一个栈存储文件名和错误次数,存储后,从第一个栈出栈 执行数量入结果栈 依次打印

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务