本题考查进制转换与位运算。将两个掩码字符串解析为 64 位无符号整数后,交集为按位与,并集为按位或,第三项是并集在 64 位上最长连续 1 的长度。
0b/0B 开头则按二进制转换,以 0x/0X 开头则按十六进制转换,否则按十进制转换。输入保证合法且不超过 264−1。& 与 |。必须按 64 位无符号语义处理,否则最高位(信道 63)为 1 时,有符号类型会变成负数,后续移位或循环可能出错。在进行信道资源分配时,需要通过掩码(Bitmask)来高效管理可用信道的状态。每个信道对应掩码中的一个二进制位(位置为 1 表示信道可用,位置为 0 表示信道被占用)。掩码状态编码以不同进制格式(二进制、十进制、十六进制)存储在配置文件中,由 64 位无符号整数表示(二进制从低位到高位对应信道 0 到信道 63),掩码的输入格式为带进制标识的字符串:
0b 开头(如 0b1011);0x 开头(如 0x1A3);255)。为了优化资源利用率,需计算两组可用信道的集合:交集、并集,以及统计连续可用信道的最大长度(连续 1 的最长子串);请实现一个函数完成以下操作:
maskStrA、maskStrB)转为 64 位无符号整数;函数需返回一个长度为 3 的数组(十进制整数),依次包含:交集结果、并集结果、最大连续可用信道长度。
输入字符串仅包含合法的进制格式(无需处理非法输入);
掩码值范围为 0≤mask≤264−1,超出范围的输入不存在;
二进制字符串长度不超过 64 位,十六进制字符串长度不超过 16 位;
连续可用信道长度计算规则:全 0 掩码返回 0,全 1 掩码返回 64。
返回一个长度为 3 的数组(十进制整数),依次包含:交集结果、并集结果、最大连续可用信道长度。
输入
"0b1011","0b1101"
输出
[9,15,4]
说明
输入
"0","0xCC"
输出
[0,204,2]
说明
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.