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;
}

results matching ""

    No results matching ""