HJ19 题解 | #简单错误记录#

简单错误记录

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

这个题目的描述容易产生歧义,或者说描述不太明确,具体问题在注释中阐述。

#Tips:
#字典是无序的,没有第一个的概念,这道题用字典做应该有点麻烦

#思路:
#使用字典存储,文件名和行数做键,错误个数做值
#放弃字典,使用两个列表做

#题目的坑:
#这个题目描述有歧义,按他的描述可以有两个思路:
#1、最多存8条记录,新的记录如果在里面则将该记录+1,如果不在则删除第一条记录再新增
#2、可以存所有的记录,有相同的直接+1,只是在输出的时候输出最后8条
#这两种思路做出来的结果是不一样的
#我认为可以将题目中的【1、 记录最多8条错误记录...】改为【1、 记录所有错误记录,输出最近8条错误记录】

f=[]#文件列表
n=[]#数量列表
while True:
    try:
        a=input()
        #可能带路径
        if "\\" in a:
            a=a.split("\\")[-1]
        #判断长度
        b=a.split()[0]#获取文件名
        c=a.split()[1]#获取行号
        if len(b)>16:
            a=b[-16:]+" "+c
        #新增记录
        if a not in f:
            f.append(a)
            n.append(1)
        else:
            n[f.index(a)]+=1

        #如果理解为只能存储8条就会写出下面注释这段代码
        #新增完毕之后检查记录数量是否超过8
        #if len(f)>8:
        #    f.pop(1)
        #    n.pop(1)
        
    except:
        #输出
        f=f[-8:]
        n=n[-8:]
        for i in range(len(f)):
            print(f[i],n[i])
        break
		

#华为##华为od##华为机试##华为od机试#
华为HJ103所有解法 文章被收录于专栏

这是我准备华为od面试的专属专栏,我会把自己的解法更新在里面,我会尽量写清楚自己的思路以及多写关键注释,希望对阅读的人有帮助~~~

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-12 18:53
第一次听说还有无水工作!!!又是被刷新三观的一天
Lynn012:666第一次听到,你给他说这里不方便我们加个微信
点赞 评论 收藏
分享
代码飞升:别用口语,后端就写后端,前端就写前端,最后别光后悔
点赞 评论 收藏
分享
05-25 10:45
门头沟学院 Java
Frank_zhang:没实习一个项目肯定不够,可以再做一个轮子,技术栈再补一个mq,微服务,整体再换个简历模板,暑期尽量再找一个日常实习
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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