题目
给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。
示例
输入: num = 1775(11011101111)
输出: 8
输入: num = 7(0111)
输出: 4
注意点
特殊元:-1,0x7fffffff,中间出现过两次错误,均是特殊的元素导致的错误,在解决之后代码运行如飞,击败99%的用户
题目
解决方案
- 利用暴力解决的方法,首先写一个函数计算一个int型的数据中,有多少连续的“1”如下的 int bitCount(num)
- 在将输入的数据中的“0”找出来,依次遍历为1,得到每次的最长串的“1”
实现代码
class Solution {
public:
int bitCount(int num){
int result = 0;
int temp = 0;
for(int i = 0; i < 32; i++){
if(((num >> i) & 1) == 1){
temp ++;
}
else{
if(result < temp){
result = temp;
}
temp = 0;
}
}
if(result < temp){
result = temp;
}
return result;
}
int reverseBits(int num) {
int result = bitCount(num);
int temp = 0;
for(int i = 0; i < 32; i++){
if(((num >> i) & 1) == 0){
temp = bitCount(num | long (pow(2, i)));
}
if(result < temp){
result = temp;
}
}
return result;
}
};