解题思路
每次维护三个变量
cur:当前位置为止连续1的个数,遇到0归零,遇到1加1
insert:在当前位置变成1,往前数连续1的最大个数,遇到0变为cur+1,遇到1加1
res:保存insert的最大值即可
class Solution {
public:
int reverseBits(int num) {
//动态规划
int res = 1;//保存结果,最小为1
int insert = 0;
int cur = 0;
for(int i = 0;i < 32;i++){
if(num & (1 << i)){//位数为1
insert += 1;
cur += 1;
}else{//位数为0
insert = cur + 1;
cur = 0;
}
res = max(res,insert); // 保存insert的最大值即可
}
return res;
}
};