标签:
Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.
For example, given the range [5, 7], you should return 4.
1 class Solution { 2 public: 3 int rangeBitwiseAnd(int m, int n) { 4 int res = 0; 5 6 for (int i=0; i<32 && (n!= 0 && m != 0); i++) { 7 res = res | (bitvalue(m, n) << i); 8 m>>=1; 9 n>>=1; 10 } 11 return res; 12 } 13 14 int bitvalue(int m, int n) { 15 if (n - m > 0) { 16 return 0; 17 } 18 if (n == m && (n&0x1 == 1)) { 19 return 1; 20 } 21 return 0; 22 } 23 };
LeetCode Bitwise AND of Numbers Range
标签:
原文地址:http://www.cnblogs.com/lailailai/p/4430972.html