E卷-API集群负载统计-100分
E卷-刷题笔记合集🔗
题目描述
某产品的RESTful API集合部署在服务器集群的多个节点上。为了实现负载均衡,需要统计各个API的访问频次。现在需要实现一个热点信息统计查询功能。
RESTful API由多个层级构成,层级之间使用 /
连接。例如在 /A/B/C/D
这个地址中:
- A 属于第一级
- B 属于第二级
- C 属于第三级
- D 属于第四级
请实现一个功能,查询给定层级上某个名字出现的频次(未出现过用0表示)。
输入格式
第一行输入一个整数 ,表示访问历史日志的条数,满足
。
接下来 行,每行为一个RESTful API的URL地址。URL地址满足:
- 仅包含英文字母和连接符
/
- 最大层级为10
- 每层级字符串最大长度为10
最后一行输入两个值:层级 和要查询的关键字。
输出格式
输出一个整数,表示给定层级上关键字出现的频次(使用完全匹配方式,大小写敏感)。
样例输入1
5
/huawei/computing/no/one
/huawei/computing
/huawei
/huawei/cloud/no/one
/huawei/wireless/no/one
2 computing
样例输出1
2
样例解释1
在第二层级上,"computing"出现了2次。
样例输入2
5
/huawei/computing/no/one
/huawei/computing
/huawei
/huawei/cloud/no/one
/huawei/wireless/no/one
4 two
样例输出2
0
样例解释2
在第四层级的URL中,没有出现"two",因此频次为0。
提示
- 注意URL分割后的层级计数方式
- 使用合适的数据结构存储每层的词频统计
- 注意处理不存在的层级或关键字
数据范围
- 最大层级数:10
- 每层字符串长度:
题解
这是一个字符串处理和统计题,主要考察如何高效地统计和查询URL中各层级的词频。
解题思路:
-
数据结构设计:
- 使用数组存储不同层级的信息
- 每个层级使用哈希表统计词频
-
处理流程:
- 分割URL获取各层级字符串
- 统计每个层级的词频
- 查询指定层级的指定词频
-
关键点:
- URL分割方式的选择
- 层级计数的起始位置
- 边界情况的处理
时间复杂度: ,其中N是URL数量,L是最大层级数。
参考代码
def solve():
# 读取URL数量
n = int(input())
# 存储各层级词频
level_counts = []
# 处理每个URL
for _ in range(n):
# 分割URL
parts = input().split('/')
# 统计每层词频
for i, word in enumerate(parts):
if not word: # 跳过空字符串
continue
# 确保level_counts有足够的层级
while len(level_counts) <= i:
level_counts.append({})
# 更新词频
level_counts[i][word] = level_counts[i].get(word, 0) + 1
# 读取查询
level, target = input().split()
level = int(level)
# 输出结果
if level >= len(level_counts):
print(0)
else:
print(level_counts[level].get(target, 0))
if __name__ == "__main__":
solve()
#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>
#includ
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
算法刷题笔记 文章被收录于专栏
本专栏收集并整理了一些刷题笔记