1. 程式人生 > >LeetCode 201.Bitwise AND of Numbers Range (數字範圍按位與)

LeetCode 201.Bitwise AND of Numbers Range (數字範圍按位與)

給定範圍 [m, n],其中 0 <= m <= n <= 2147483647,返回此範圍內所有數字的按位與(包含 m, n 兩端點)。

示例 1: 

輸入: [5,7]
輸出: 4

示例 2:

輸入: [0,1]
輸出: 0

 

AC C++ Solution:
 

class Solution {
public:
    int rangeBitwiseAnd(int m, int n) {
        int trans = 0;
        while(m != n) {     //當m != n 時,移除末尾位,並記錄移動位數,最後再移回來。即為範圍內所有數字按位與的結果
            ++trans;
            m >>= 1;
            n >>= 1;
        }
        
        return m << trans;
    }
};