本题用 哈希表 统计每一条 URL 的全部路径前缀出现次数,再筛出次数不少于 2 的前缀并排序。
前缀提取:把 URL 按 / 分段(跳过连续斜杠和末尾空段),从左到右累加得到 /a、/a/b、/a/b/c。. 是段内字符,/api.js 不会拆成 /api。
根路径特殊规则:只有输入里原样出现的 / 才计入 /;/a/b 这类路径不会派生出 /。实现时对 url == "/" 单独加一,其余 URL 从第一段开始拼前缀。
统计完成后,丢掉次数小于 2 的键。排序关键字:出现次数降序;次数相同则前缀字符串字典序升序。没有合格前缀时返回空数组。
在企业安全运营工作中,安全分析人员需要从海量日志中识别异常访问模式,统计出频率较高的 URL 路径模式。
现有一批访问日志,请提取出现次数不少于 2 次的不同 URL 路径前缀,并统计其出现次数。
路径前缀说明:对于 URL /a/b/c,其所有路径前缀依次为:/a,/a/b,/a/b/c。
字符串数组,数组里每个元素表示一条 URL;URL 包含小写英文字母、/ 和 .;URL 总长度之和 ≤106;每条 URL 至少包含一个路径前缀;根路径 / 仅来自于输入,不做派生。
字符串数组,每个元素表示该前缀字符及其出现次数,格式为:路径前缀 出现次数(用空格分隔);如果没有符合条件的字符串返回空数组。按出现次数从多到少排序;次数相同时,按路径前缀字典序升序排列。
输入
["/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统计结果(出现次数 ≥2):
/api:4 次/api/v1:3 次/api/v1/users:2 次输出:/api 4,/api/v1 3,/api/v1/users 2。
输入
["/admin","/api.js","/admin","/api.js"]
输出
["/admin 2","/api.js 2"]
说明
路径前缀出现次数相同(均为 2 次),按字典序升序排列:/admin < /api.js。
输入
["/","/"]
输出
["/ 2"]
说明
单独 / 也作为合法路径统计。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册