AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

N0019. 0429-日志文件异常检测

简单通过率 51% · 提交 41 · 通过 21
哈希表排序模拟

小慕在维护公司的日志监控系统时,需要实时检测日志文件中的异常模式。系统每天会产生大量日志记录,每条日志记录包含一个字符串标识。异常模式定义为:在同一时间段内,至少出现 3 次的。 请编写一个程序,帮助小慕找出所有的日志标识,并按照以下规则输出: 1. 首先按照出现次数从高到低排序 2. 如果出现次数相同,则按照排序

提示:带虚线的词点一下有通俗解释。

输入描述

输入所有日志标识以空格分割。 日志标识由大小写字母、数字和下划线组成,长度不超过 50。日志数量范围为[1,10000]

输出描述

输出所有出现次数大于等于 3 次的日志标识,每行一个,按照上述排序规则输出,以空格分割。 如果没有符合条件的日志标识,则输出 "NONE"

示例

示例 1

输入

8
error_404 error_404 warning_500 error_404 info_200 warning_500 warning_500 info_200

输出

error_404 warning_500

说明:1. error_404出现了 3次(数组第0、1、3个元素),首次出现位置是第0个元素 2. warning_500 出现了 3 次(数组第2、5、6个元素),首次出现位置是第2个元素 3. info_200 只出现了 2 次(数组第4、7个元素),不符合条件 4. error_404 和 warning_500 出现次数相同(都是3次),按照首次出现的先后顺序,先输出 error_404,再输出 warning_500, 注意:虽然 info_200 出现了 2 次,但题目要求的是出现次数大于等于 3 次,因此不输出 info_200

示例 2

输入

5
test_case test_case test_case2 test_case2 test_case2

输出

test_case2

说明:test_case 出现了 2 次,不符合条件 test_case2 出现了 3 次,首次出现位置是数组第3个元素

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
日志异常检测示例图解 输入序列(按顺序): error_404 error_404 warning_500 error_404 info_200 warning_500 warning_500 info_200 统计每个标识出现次数: error_404: 3次 warning_500: 3次 info_200: 2次 条件:出现次数 ≥ 3 次 符合条件的标识: error_404 warning_500 排序:按次数降序(相同则按首次出现位置升序)→ error_404 先出现,所以先输出
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「0429-日志文件异常检测」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。