记录一个计算二进制中1的个数的小算法:
n&(n-1)可以不管1之间的0,每次只消去1
实在是优雅!
上代码
class Solution {
public:
int hammingDistance(int x, int y) {
int m = x ^ y, ans = 0;
while(m) {
m &= (m-1);
ans ++;
}
return ans;
}
};
也有直接封装好的
class Solution {
public int hammingDistance(int x, int y) {
return Integer.bitCount(x^y);
}
}
func hammingDistance(x int, y int) int {
return bits.OnesCount(uint(x^y))
}