JavaScript中二进制数1之间最长距离
我们需要编写一个JavaScript函数,该函数接收一个正整数n作为输入。该函数应该找到并返回n的二进制表示中任意两个相邻的1之间最长的距离。
如果没有两个相邻的1,则应返回0。
如果两个1之间只有0(也可能没有0)隔开,则这两个1是相邻的。两个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; // go through every bit for (let i = 0; i < 32; i++) { // check whether the bit is `1`. // if true, calculate the longest distance with // previous `1` if `1` was previously found. if ((num >> i) & 1 > 0) { if (last >= 0) { ans = Math.max(ans, i - last); } last = i; } } return ans; }; console.log(binaryGap(num));
输出
控制台的输出将是:
2
广告