Binary Gap
找出一個數字的二進位表示中,被 1 包圍的最長 0 長度,例:1041 = 10000010001 => binary gap 長度 = 5
很簡單,就是一直將數字向右移並計算碰到的 0,因為一個數字的二進位表示法一定開頭是 1,所以只要一開始將偶數除到奇數就可以開始計算
public int solution(int N) {
if (N == 0) return 0;
while (N%2 == 0) N = N >> 1;
int max = 0;
int zero = 0;
while (N > 0) {
if ((N&1) == 0) {
zero++;
max = Math.max(max, zero);
} else {
zero = 0;
}
N = N >> 1;
}
return max;
}