09 Sept 2026Go / Python / TypeScriptEasy

Binary Gap

Find the greatest distance between consecutive set bits in an integer.

Scan bit positions from least significant to most significant, retaining the previous set-bit position and maximizing the gap.

complexity

O(log n) time and O(1) space.

solution files

  • Go binary-gap/solution.go
  • Python binary-gap/solution.py
  • TypeScript binary-gap/solution.ts

Solution files

Gobinary-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
}
Pythonbinary-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
TypeScriptbinary-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;
}