Go•binary-gap/solution.go
package main
func binaryGap(n int) int {
previous, best := -1, 0
for position := 0; n > 0; position, n = position+1, n>>1 {
if n&1 == 1 {
if previous >= 0 && position-previous > best {
best = position - previous
}
previous = position
}
}
return best
}
Python•binary-gap/solution.py
class Solution:
def binaryGap(self, n: int) -> int:
previous, best, position = -class="syntax-number">1, class="syntax-number">0, class="syntax-number">0
while n:
if n & class="syntax-number">1:
if previous >= class="syntax-number">0: best = max(best, position - previous)
previous = position
position, n = position + class="syntax-number">1, n >> class="syntax-number">1
return best
TypeScript•binary-gap/solution.ts
function binaryGap(n: number): number {
let previous = -class="syntax-number">1;
let best = class="syntax-number">0;
for (let position = class="syntax-number">0; n > class="syntax-number">0; position += class="syntax-number">1, n >>= class="syntax-number">1) if ((n & class="syntax-number">1) === class="syntax-number">1) { if (previous >= class="syntax-number">0) best = Math.max(best, position - previous); previous = position; }
return best;
}