9.20华为OD机试真题 新系统 – 简单URL 路径提取器 (JavaPyCC++JsGo)
2026 华为OD机试真题9月20日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
在企业安全运营工作中,安全分析人员需要从海量日志中识别异常访问模式,统计出频率较高的 URL 路径模式。
现有一批访问日志,请提取出现次数不少于 2 次的不同 URL 路径前缀,并统计其出现次数。
路径前缀说明:对于 URL /a/b/c,其所有路径前缀依次为:/a,/a/b,/a/b/c。
2026 华为OD机试真题9月20日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
输入描述
输入一行 URL 数组。URL 之间通常使用英文逗号分隔;样例中也可能使用带方括号和双引号的数组形式。
每个 URL 包含小写英文字母、/ 和 .,所有 URL 的总长度不超过 10^6。每条 URL 至少包含一个路径前缀。根路径 / 仅在输入本身为 / 时参与统计,不从其他 URL 中派生。
输出描述
输出一个字符串数组,每个元素的格式为 路径前缀 出现次数,中间使用一个空格分隔,只保留出现次数不少于 2 的路径前缀。
结果先按出现次数从大到小排序;次数相同时,按路径前缀字典序升序排列。如果没有符合条件的路径前缀,输出空数组 []。
示例1
输入
/api/v1/users/list,/api/v1/users/detail,/api/v1/orders,/api/v2/products
输出
["/api 4","/api/v1 3","/api/v1/users 2"]
说明
URL 提取路径前缀:
/api/v1/users/list:/api,/api/v1,/api/v1/users,/api/v1/users/list/api/v1/users/detail:/api,/api/v1,/api/v1/users,/api/v1/users/detail/api/v1/orders:/api,/api/v1,/api/v1/orders/api/v2/products:/api,/api/v2,/api/v2/products统计结果中,
/api出现 4 次,/api/v1出现 3 次,/api/v1/users出现 2 次。
示例2
输入
/admin,/api.js,/admin,/api.js
输出
["/admin 2","/api.js 2"]
说明
两个路径前缀都出现 2 次,因此按字典序升序排列。
示例3
输入
["/","/"]
输出
["/ 2"]
说明
单独的根路径
/也作为合法路径统计,但其他 URL 不会自动产生根路径前缀。
解题思路
使用哈希表记录每个路径前缀的出现次数。处理一个普通 URL 时,从下标 1 开始扫描:每遇到一个斜杠,斜杠之前的子串就是一级完整路径前缀;扫描结束后,再统计 URL 本身。
例如 /a/b/c 在两个内部斜杠处分别产生 /a、/a/b,最后再加入完整路径 /a/b/c。根路径 / 需要单独处理,避免把它错误地当作其他 URL 的公共前缀。
统计完成后,筛选出现次数不少于 2 的项目,再按照次数降序、路径字典序升序排序。输入解析与业务统计分离,输入层同时兼容普通逗号分隔形式和样例中的数组形式