力扣461题 汉明距离
汉明距离:以理查德·卫斯里·汉明的名字命名的。在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。
解题思路:x,y先进行一次异或(^)运算得值val,从而使得值val包含的x,y的所有位的1,当val不为0时,让val与1进行与(&)运算,从而得出1的个数,然后用count统计1的个数,然后再对val进行右移(>>)运算,清除二进制位最后一位已经统计过的1,当val与1与运算为0时,返回count的值!
附上代码
class Solution {
public:
int hammingDistance(int x, int y) {
// 用计数器统计1的个数
int count = 0, val = x ^ y;// 两个数先进行异或操作,得到一个结果值
while (val != 0)
{
if ((val & 1) == 1)
count++;
val = val >> 1;
}
return count;
}
};
日拱一卒,功不唐捐!