题解 | #简单错误记录#

简单错误记录

https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb

自己写的笨办法

 let resultArr = []; //错误记录结合
    let dataArr = []; //数据集合
    while ((line = await readline())) {
        let fileUrl = line.split(" ")[0];
        let listNum = line.split(" ")[1]; //行号
        let nameArr = fileUrl.split("\\");
        let name = nameArr[nameArr.length - 1].substring(name.length - 16); //文件名称
        // 寻找是否之前出现过相同用例,如果有则不会新增
        let flag = dataArr.find((item) => {
            return item.url === fileUrl && item.line === listNum;
        });
        if (!flag) {
            dataArr.push({
                url: fileUrl,
                name: name,
                line: listNum,
            });
        }
    }
    dataArr.forEach((item) => {
        // 是否存在相同错误记录
        let target = resultArr.find(
            (i) => i.name === item.name && i.line === item.line
        );
        if (!target) {
            resultArr.push({
                ...item,
                num: 1,
            });
        } else {
            let index = resultArr.indexOf(target);
            if (resultArr[index]) {
                resultArr[index].num += 1;
            }
        }
    });
    // 记录条数少时从头开始输出
    let length = resultArr.length <= 8 ? 0 : resultArr.length - 8;
    for (let i = length; i < resultArr.length; i++) {
        let item = resultArr[i];
        console.log(`${item.name} ${item.line} ${item.num}`);
    }

改良一部分后的代码

let dataArr = []; //错误记录结合
    let result = {}; //数据集合
    while ((line = await readline())) {
        let fileUrl = line.split(" ")[0];
        let listNum = line.split(" ")[1]; //行号
        let nameArr = fileUrl.split("\\");
        let name = nameArr[nameArr.length - 1];
        name = name.substring(name.length - 16); //文件名称
        // 寻找是否之前出现过相同用例,如果有则不会新增
        let flag = dataArr.find((item) => {
            return item === fileUrl + " " + listNum;
        });
        dataArr.push(fileUrl + " " + listNum);
        if (!flag) {
            let key = name + " " + listNum;
            if (result[key]) {
                result[key] += 1;
            } else {
                result[key] = 1;
            }
        }
    }
    let d = Object.keys(result).slice(-8);
    for (let i of d) {
        console.log(i + " " + result[i]);
    }

全部评论

相关推荐

2025-12-18 14:15
已编辑
哈尔滨工程大学 前端工程师
牛客87317764...:最近没啥hc,做好心灰意冷的准备。另外,大概率只有字节给你面试,最好别作为处女面
实习简历求拷打
点赞 评论 收藏
分享
程序员牛肉:可以说含金量不如王者荣耀省标。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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