**日志关键词统计**
2026 华为OD机试真题 6月22日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
给定日志字符串数组 logs 和关键词数组 keywords,统计每个关键词在所有日志中出现的总次数,并找出经常一起出现的关键词组合(至少在 2 条日志中同时出现)。
2026 华为OD机试真题 6月22日华为OD上机新系统考试真题 100 分题型
注意
- 关键词匹配大小写不敏感,完整单词匹配(不能是部分匹配)
- 单词边界:空格、标点符号(逗号、句号、感叹号、问号、分号、冒号)或字符串首尾,英文标点,无中文标点
- 关联组合:两个关键词在至少 2 条不同日志中同时出现才算"经常关联"
- 返回结果:前 keywords.length 个元素为关键词出现次数,后续元素每两个一组表示关联组合索引(索引小的在前,索引大的在后);多个组合时先按第一个索引升序,再按第二个索引升序
数据规模
1≤logs.length ≤1000,1≤keywords.length ≤100,每条日志长度 ≤1000 字符
输入描述
日志字符串数组 logs 和关键词数组 keywords
输出描述
经常一起出现的关键词组合
示例1
输入
Error in system,warning: error detected,No errors found
error,warning
输出
2,1
说明
关键词统计:error 出现 2 次,warning 出现 1 次
关联分析:error 和 warning 只在第 2 条日志中同时出现 1 次,未达到至少 2 次共现的标准,因此无关联组合输出
示例2
输入
Error: system failure,Warning: error in network,System error detected again,Network warning error found
error,system,warning,network
输出
4,2,2,2,0,1,0,2,0,3,2,3
说明
关键词统计:error 出现 4 次,system 出现 2 次,warning 出现 2 次,network 出现 2 次 关联组合:
- (error,system):在第 1、3 条日志中同时出现,共现 2 次 → 输出 [0,1]
- (error,warning):在第 2、4 条日志中同时出现,共现 2 次 → 输出 [0,2]
- (error,network):在第 2、3、4 条日志中同时出现,共现 3次 → 输出 [0,3]
- (warning,network):在第 2、4 条日志中同时出现,共现 2 次 → 输出 [2,3] 最终结果:统计次数 [4,2,2,2] + 关联组合索引 [0,1,0,2,0,3,2,3]
示例3
输入
Error in module A,Module error B error,Error module C error,Module error D
error,module
输出
6,4,0,1
说明
关键词统计:error 出现 6 次(第 1 条 1 次,第 2 条 2 次,第 3 条 2 次,第 4 条 1 次),module 出现 4 次
关联组合:(error,module)在第 1、2、3、4 条日志中都同时出现,共现 4 次 → 输出 [0,1] 最终结果:统计次数 [6,4] + 关联组合索引 [0,1]
示例4
输入
Test log one,Test log two,Test log three
test,log,one,two,three
输出
3,3,1,1,1,0,1
说明
关键词统计:test 出现 3 次,log 出现 3 次,one 出现 1 次,two 出现 1 次,three 出现 1 次
关联组合:(test,log)在第 1、2、3 条日志中都同时出现,共现 3 次 → 输出 [0,1]
其他关键词组合未达到 2 次共现标准
最终结果:统计次数 [3,3,1,1,1] + 关联组合索引 [0,1]
解题思路
本题需要解决两个核心问题:关键词计数和关联组合发现。
1. 关键词计数
- 大小写不敏感:所有文本和关键词统一转为小写进行比较
- 完整单词匹配:使用正则表达式
[\s,.!?;:]+将日志切分为单词,只匹配完整单词,不做子串匹配 - 统计方法:遍历切分后的单词列表,累加每个关键词的出现次数
2. 关联组合发现
- 预处理优化:将每条日志中出现过的关键词用集合(Set)记录,便于快速判断
- 共现判断:对于每一对关键词 (i, j),遍历所有日志,检查该对关键词同时出现的次数
- 过滤条件:只有共现次数 >= 2 的关键词对才被保留
3. 结果组织
- 前 N 个元素为每个关键词的出现次数
- 后续元素每两个一组,代表一个满足条件的关联组合(索引小的在前)
复杂度分析
- 时间复杂度:O(L + K N + K² L)
- L 为日志总数,K 为关键词数量
- 单词切分和计数 O(L)
- 关联组合枚举 O(K² * L)
- 空间复杂度:O(L + K + K²) 用于存储切分结果、计数数组和关