In this Leetcode Bitwise AND of Numbers Range problem solution we have Given two integers left and right that represent the range [left, right], return the bitwise AND of all numbers in this range, inclusive.

Leetcode Bitwise AND of Numbers Range problem solution


Problem solution in Python.

import math
class Solution:
    def rangeBitwiseAnd(self, left: int, right: int) -> int:
        ans = 0
        if left == 0 or right == 0: return 0
        while left and right:
            left_most_sbit = int(math.log2(left))
            right_most_sbit = int(math.log2(right))
            if left_most_sbit==right_most_sbit:
                ans = ans | 1<<left_most_sbit
                left = left - (1<<left_most_sbit)
            else:
                break
            right = right - (1<<right_most_sbit)
        return ans



Problem solution in Java.

public int rangeBitwiseAnd(int m, int n) {
        int result = 0, num, i;
        for (i=31;i>=0;i--) {
            num = 1 << i;
            if ((num & n) > 0) {
                if ((num & m) > 0)
                    result += num;
                else
                    break;
            } 
        }
        return result;
    }
}


Problem solution in C++.

class Solution {
public:
    int rangeBitwiseAnd(int m, int n) {
        int i = 0;
        while(m!=n){
            m=m>>1;
            n=n>>1;
            ++i;        
        }
        return m<<i;
    }
};


Problem solution in C.

int rangeBitwiseAnd(int m, int n){
    int sum=0,val1=m,val2=n;
    long int k=1;
    while(m>0){
        if(m&1 && n&1){
            if(val2-val1<k)
                sum+=k;
        }
        m=m>>1;
        n=n>>1;
        k=k<<1;
    }
    return sum;
}