AVRIL_START_JANCOKALIVEAVRIL_END_JANCOK Interactive Terminal

Command Executor

**信道资源分配与掩码运算** - 魔改工程师

**信道资源分配与掩码运算**

2026 华为OD机试真题8月16日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

在进行信道资源分配时,需要通过掩码(Bitmask)来高效管理可用信道的状态。每个信道对应掩码中的一个二进制位(位置为 1 表示信道可用,位置为 0 表示信道被占用)。掩码状态编码以不同进制格式(二进制、十进制、十六进制)存储在配置文件中,由 64 位无符号整数表示(二进制从低位到高位对应信道 0 到信道 63),掩码的输入格式为带进制标识的字符串:

  • 二进制字符串:以 0b 开头(如 0b1011);
  • 十六进制字符串:以 0x 开头(如 0x1A3);
  • 十进制字符串:无特殊前缀(如 255)。

为了优化资源利用率,需计算两组可用信道的集合:交集、并集,以及统计连续可用信道的最大长度(连续 1 的最长子串);请实现一个函数完成以下操作:

  1. 将两个输入的掩码字符串(maskStrAmaskStrB)转为 64 位无符号整数;
  2. 计算两个掩码的可用信道交集(仅保留两个掩码中都为 1 的位);
  3. 计算两个掩码的可用信道并集(保留任意一个掩码中为 1 的位);
  4. 统计两个掩码的连续可用信道最大长度(二进制中连续 1 的最长长度)。

函数需返回一个长度为 3 的数组(十进制整数),依次包含:交集结果、并集结果、最大连续可用信道长度。

2026 华为OD机试真题8月16日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

输入描述

输入字符串仅包含合法的进制格式(无需处理非法输入);

掩码值范围为 0 <= mask <= 2^64 - 1,超出范围的输入不存在;

二进制字符串长度不超过 64 位,十六进制字符串长度不超过 16 位;

连续可用信道长度计算规则:全 0 掩码返回 0,全 1 掩码返回 64。

输入为一行,两个掩码字符串使用英文逗号分隔:

maskStrA,maskStrB

输出描述

输出一个长度为 3 的数组(十进制整数),依次包含:交集结果、并集结果、最大连续可用信道长度。

数组格式中不包含空格,例如:

[9,15,4]

示例1

输入

0b1011,0b1101

输出

[9,15,4]

说明

  • 进制转换:0b1011=11(十进制),0b1101=13(十进制);
  • 交集:11&13=9(十进制);
  • 并集:11|13=15(十进制);
  • 并集的二进制为 0b1111,连续 1 的最长长度为 4。

示例2

输入

0,0xCC

输出

[0,204,2]

说明

  • 进制转换:0(十进制)=0,0xCC=204(十进制);
  • 交集:0&204=0;
  • 并集:0|204=204(二进制 0b11001100);
  • 并集的连续 1 最长长度为 2。

解题思路

核心思想

先根据前缀把两个掩码字符串转成 64 位无符号整数,再用位运算得到交集和并集。

最长连续可用信道长度只需要统计并集掩码中连续 1 的最长长度。因为只考虑 64 位,所以固定循环 64 次即可。

算法步骤

  1. 读取一行输入,按英文逗号拆成两个掩码字符串。
  2. 根据 0b0x 或无前缀解析为整数。
  3. 计算 intersect = a & b
  4. 计算 union = a | b
  5. 从低位到高位遍历并集的 64 个二进制位,维护当前连续 1 的长度和最大长度。
  6. [intersect,union,maxLen] 格式输出。

复杂度分析

  • 时间复杂度:O(1),固定处理 64 位。
  • 空间复杂度:`O(
THE END