1.记录连续1的长度
设32位数组,记录连续1的长度
以1775为例(11011101111)
当前位为1,则arr[idx]++,否则idx++,
对应的数组为2 3 4
只需要求arr数组相邻元素的和+1的值即可
代码如下:
class Solution {
public:
int reverseBits(int num) {
vector<int> arr(32);
int idx=0,imax=0;
while(num!=0)
{
if(num&1)//当前位是1
arr[idx]++;
else
idx++;
num=num>>1;
}
for(int i=0;i<arr.size()-1;i++)
imax=max(imax,arr[i]+arr[i+1]+1);
return imax;
}
};