Bitwise and of Numbers Range
Created: March 31, 2020 by [lek-tin]
Last updated: April 23, 2020
Given a range [m, n]
where 0 <= m <= n <= 2147483647
, return the bitwise AND of all numbers in this range, inclusive.
Example 1
Input: [5,7]
Output: 4
Example 2
Input: [0,1]
Output: 0
Solution
«««< HEAD
Java
class Solution {
public int rangeBitwiseAnd(int m, int n) {
int shift = 0;
while (m < n) {
m >>= 1;
n >>= 1;
shift++;
// System.out.println("m: " + String.format("%32s", Integer.toBinaryString(m)).replaceAll(" ", "0"));
// System.out.println("n: " + String.format("%32s", Integer.toBinaryString(n)).replaceAll(" ", "0"));
// System.out.println(shift);
}
return m<<shift;
}
}
Python
dev
class Solution:
def rangeBitwiseAnd(self, m: int, n: int) -> int:
shift = 0
while m < n:
m = m >> 1
n = n >> 1
shift += 1
m = m << shift
return m