leetcode面试题.翻转数位

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;
    }
    
};

猜你喜欢

转载自blog.csdn.net/qq_38196982/article/details/106941039