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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP