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 的项目,再按照次数降序、路径字典序升序排序。输入解析与业务统计分离,输入层同时兼容普通逗号分隔形式和样例中的数组形式

THE END