[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;
}
};
本文介绍了一种高效计算两个整数之间汉明距离的方法。通过使用位运算技巧,特别是利用异或运算和按位与运算,可以快速计算出两个整数二进制表示下不同位的数量。
405

被折叠的 条评论
为什么被折叠?



