【华为OD】C卷真题 100%通过 : API集群负载统计 Java代码实现[思路+代码]

JS代码实现:

【华为OD】C卷真题 100%通过 : API集群负载统计 JS代码实现[思路+代码]-CSDN博客

C++代码实现:

【华为OD】C卷真题 100%通过 : API集群负载统计 C++代码实现[思路+代码]-CSDN博客

 

题目描述:

某个产品的RESTful API集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。

RESTful API的由多个层级构成,层级之间使用 / 连接,如 /A/B/C/D 这个地址,A属于第一级,B属于第二级,C属于第三级,D属于第四级。

现在负载均衡模块需要知道给定层级上某个名字出现的频次,未出现过用0次表示,实现这个功能。

输入描述

第一行为N,表示访问历史日志的条数,

接下来N行,每一行为一个RESTful API的URL地址,约束地址中仅包含英文字母和连接符/,最大层级为10,每层级字符串最大长度为10。

最后一行为层级L和要查询的关键字。    

输出描述

输出给定层级上,关键字出现的频次,使用完全匹配方式(大小写敏感)。

示例1

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

5
/huawei/computing/no/one
/huawei/computing
/huawei
/huawei/cloud/no/one
/huawei/wireless/no/one
2 computing

输出

2

说明

复制

在第二层级上,computing出现了2次,因此输出2.

示例2

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

5
/huawei/computing/no/one
/huawei/computing
/huawei
/huawei/cloud/no/one
/huawei/wireless/no/one
4 two

输出

0

说明

存在第四层级的URL上,没有出现two,因此频次是0

     986                                                         
                                                            
              +---+                                                          
  3            |   |       ++                               +       +---|   
  |           |   | 3      +                6               +  |   +   |        +
  |      +     |   |       +         +                      +    |  +   |       +
  |      +    |   +---+    +        +        +++++          +   |  +   |        +
  |      +    | +      |   +   +----+        |   |          +   |  +   |        +
  |      +  3 | +      |   +   +    +      2 |   |     2    +   |  +   |        +
  |      +    | +      |   +   +    +        |   |          +   |  +   |        +
  |      +---+ |     |    |  +    +    ----+   |   +---+    |  |  +   |         +
  |      |     |     |    |  +    +    |       |   |   |    |  |  +   |         +
  |    1 |     |     | 8  |  +    +  1 |   |    | 1 |   | 1 |   |  +   |        +
  |      |     |     |    |  +    +    |   |    |   |   |   |   |  +   |        +
  |  +---+     |     +---+   +    ++---+    ++   +---+   +---+   |  +   |        +
  |  |         |         |   +    |         ++              |   |  |+   |        +
  |0 |         |         | 0 +  0 |         ++              | 0 |  |+   |        +
  |  |         |         |   +    |         ++              |   |  |+   |        +
  +---+         +          +-------+                       +---+| +|+   |        +
                +                                                    +   |        +
    0   1   2   3   4   5   6   7   8   9  10  11  12 + v:    w  u m    u 1 0 2 4
 

题目描述:

        将字符串拆串之后,使用映射保持键值对来处理,键是每级号,值是对应每级的字符串

最后按级来统计目标字符串即可

代码实现:

import java.io.IOException;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.nextLine());
        Map> ms = new HashMap<>();

        for (int i = 0; i < n; i++) {
            String[] parts = sc.nextLine().split("/");
            for (int j = 1; j < parts.length; j++) {
                int key = j;
                if (!ms.containsKey(key)) {
                    ms.put(key, new ArrayList<>());
                }
                ms.get(key).add(parts[j]);
            }
        }

        String input = sc.nextLine();
        String[] inputParts = input.split(" ");
        int idx = Integer.parseInt(inputParts[0]);
        String target = inputParts[1];
        int cnt = 0;
        for (String v : ms.get(idx)) {
            if (target.equals(v)) {
                cnt++;
            }
        }
        System.out.println(cnt);
    }
}

你可能感兴趣的:(杂谈,华为od,c语言,java,python,JS,C++,码蚁软件)