题目
思路
规定了范围是正数,直接右移,按位与取出最低位,高位补0没影响
代码
class Solution {
public:
int binaryGap(int N) {
//左移
int maxDis = 0, bit = 0, lastOne = -1, isOne = 0;
while(N) {
isOne = N & 0x00000001;
if (isOne) {
if (lastOne == -1) lastOne = bit;
maxDis = max(maxDis, bit - lastOne);
lastOne = bit;
}
N >>= 1;
bit++;
}
return maxDis;
}
};