题解 | #简单错误记录#

简单错误记录

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

全部评论

相关推荐

头像
昨天 16:48
已编辑
百度_高级研发工程师
事实是检验真理的唯一标准。&nbsp;无论我们怎么去说,去讲述,去证明,都抵不过一个offer来得实在,无论我们怎么去复现求职中的摸爬滚打、扒皮抽筋、狼狈不堪,都抵不过你在简历写上大厂的名字(外包不算)。&nbsp;所以在我求职期间,我什么话都不说,什么话都不讲,因为没有意义,虽然我总讲过程才是意义,但只有当你上岸的那一刻,你才有资格回想在水里的挣扎,只有等你出了山,你才知道山的全貌。&nbsp;我为什么一定要离开华为OD,难道它不稳定吗,不能赚钱吗。为了证明自己,那肯定有的。其实更多的是印证我的认知是否真的正确。&nbsp;(给不了解我的人交代一下背景,在下双非一本,gap一年,华为OD外包,摸爬滚打4个月,艰难上岸百度正编)一、...
先锋战士:说得很真诚。鄙视链自古有之,学历,家庭背景,财富,权利。从小有之,小学羡慕那些当班委的,中学羡慕那些学生会的,高中羡慕尖子班拿教学金的,大学羡慕高绩点,毕业了羡慕进大厂的。工作了,又羡慕高职级的,再后来又羡慕别人早早结婚的。我想表达的观点很简单,无论是华为od还是百度,都是经历,没有孰高孰低,为了抵达下一个风景,总会付出更多东西,但不就是人生吗?正如登山,每个阶段的山,都要想办法攀登,在博主的文字中,见到了坚持和积极寻找问题解决办法的心态
学历对求职的影响
点赞 评论 收藏
分享
10-10 11:38
已编辑
湖南理工大学 Java
小浪_Coding:多沟通叭, 公式简历+学历一般的话难找
点赞 评论 收藏
分享
Aurora23:属于挂一半,暂时进池子了,隔一段时间没有其他组捞的话就彻底结束了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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