Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Khoảng cách dài nhất giữa các bit 1 trong nhị phân JavaScript

Chúng ta cần viết hàm JavaScript nhận vào số nguyên dương n. Hàm tìm và trả về khoảng cách dài nhất giữa hai bit 1 liền kề trong biểu diễn nhị phân của n.

Nếu không có hai bit 1 liền kề, trả về 0.

Hai bit 1 là liền kề nếu chỉ có bit 0 ngăn cách (có thể không có bit 0). Khoảng cách là hiệu tuyệt đối giữa vị trí bit của chúng. Ví dụ, hai bit 1 trong "1001" có khoảng cách 3.

Ví dụ: Nếu đầu vào là 22, kết quả là 2,

vì:

  • Mã nhị phân của 22 là 10110
  • Cặp 1 liền kề đầu tiên "10110" khoảng cách 2.
  • Cặp thứ hai "10110" khoảng cách 1.
  • Kết quả là lớn nhất của hai khoảng cách, là 2.

Lưu ý "10110" không phải cặp hợp lệ vì có bit 1 ngăn giữa hai bit 1 được gạch dưới.

Ví dụ

const num = 22; 
const binaryGap = (num = 1) => { 
  let last = -1; 
  let ans = 0; 
  for (let i = 0; i < 32; i++) { 
    if ((num >> i) & 1 > 0) { 
      if (last >= 0) { 
        ans = Math.max(ans, i - last); 
      } 
      last = i; 
    } 
  } 
  return ans; 
}; 
console.log(binaryGap(num));

Kết quả

Kết quả in ra console:

2