>>
按位与&
1
直到0
e
或E
float64
类型,使用需int()
转为整型
$j = int(1e9) // 10 的 9 次方
给定一个正整数 n,找到并返回 n 的二进制表示中两个 相邻 1 之间的 最长距离 。如果不存在两个相邻的 1,返回 0 。 如果只有 0 将两个 1 分隔开(可能不存在 0 ),则认为这两个 1 彼此 相邻 。两个 1 之间的距离是它们的二进制表示中位置的绝对差。例如,"1001" 中的两个 1 的距离为 3 。
var binaryGap = function(n) {
let i = r = 0, j = 1e9
while (n) {
if (n & 1) {
r = Math.max(r, i - j)
j = i
}
n >>= 1
i++
}
return r
};
func binaryGap(n int) int {
i, r, j := 0, 0, int(1E9)
for n > 0 {
if n & 1 == 1 {
if i - j > r {
r = i - j
}
j = i
}
n >>= 1
i++
}
return r
}
class Solution {
function binaryGap($n) {
$i = $r = 0;
$j = 1e9;
while ($n) {
if ($n & 1 === 1) {
$r = max($r, $i - $j);
$j = $i;
}
$n >>= 1;
$i++;
}
return $r;
}
}