二进制 JavaScript 中 1 之间的最长距离
javascriptweb developmentfront end technologyobject oriented programming
我们需要编写一个 JavaScript 函数,该函数以正整数(例如 n)为参数。该函数应查找并返回 n 的二进制表示中任意两个相邻 1 之间的最长距离。
如果没有两个相邻的 1,则我们必须返回 0。
如果两个 1 之间只有 0(可能没有 0),则它们是相邻的。两个 1 之间的距离是它们位位置之间的绝对差。例如,"1001"中的两个 1距离为 3。
例如 −
如果输入是 22,那么输出应该是 2,
因为,
- 22 的二进制代码是 10110
- 第一对相邻的 1 是"10110",距离为 2。
- 第二对相邻的 1 是"10110",距离为 1。
- 答案是这两个距离中最大的一个,即 2。
请注意,"10110"不是有效对,因为两个带下划线的 1 之间有一个 1。
示例
const num = 22;
const binaryGap = (num = 1) => {
let last = -1;
let ans = 0; // 遍历每一位
for (let i = 0; i < 32; i++) {
// 检查位是否为 `1`。 //
// 如果为真,则计算最长距离
// 如果之前找到 `1`,则计算前一个 `1`。
if ((num >> i) & 1 > 0) {
if (last >= 0) {
ans = Math.max(ans, i - last);
}
last = i;
}
}
return ans;
};
console.log(binaryGap(num));
输出
控制台中的输出将是 −
2
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

