[LeetCode]461.Hamming Distance
题目描述
思路
按照题目要求,最简单的思路是求异或,然后数异或结果的二进制表示中1的个数
异或简单,具体是数1的过程
答案的方法是 n&(n - 1)
从右向左一次数1
比如:
xxxx10
减1后是
xxxx01
进行与操作之后是
xxxx00
最右面的1就消去了
循环计数直到n为0
代码
class Solution {
public:
int hammingDistance(int x, int y) {
int i = 0, n = x ^ y;
while(n) {
++i;
n &= n - 1;
}
return i;
}
};