190
这题比较有意思,我还以为需要使用String,但是发现还原回来的时候很有肯能引起溢出,没想这么简单
public int reverseBits(int n) {
int result = 0;
if (n == 0) {
return result;
}
for (int i = 0; i < 32; i++) {
int temp = n & 0x01;//取最后一位数字
result = (result << 1) | (temp);//把最后一位数字加到重新以零开始的数的后面(相当于心数字的前面)
n >>= 1;//继续
}
return result;
}
191
思路就是取出每一个位和1进行比较就是了,怎么取出尼,有两种方法:一种是使用Integer.toBinaryString()方法,一种是就是使用上面问题的解决办法
public int hammingWeight(int n) {
int result = 0;
for (int i = 0; i < 32; i++) {
int temp = n & 0x01;
if (temp == 1) {
result++;
}
n >>= 1;
}
return result;
}