leetcode-汉明距离

Posted 土豆烧鸡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-汉明距离相关的知识,希望对你有一定的参考价值。

汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y,计算它们之间的汉明距离。
注意:
0 ≤ x, y < 231.
示例:
输入: x = 1, y = 4
 
输出: 2
 
解释:
1 (0 0 0 1)
4 (0 1 0 0)
        ↑   ↑
 
上面的箭头指出了对应二进制位不同的位置。
 
 
^
如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。

思路:利用了异或的性质^   两个数字的二进制字符,比如   01001^10010=11011 

异或^得到的结果中含有多少个1,就表示他的汉明距离。和上一道题:位1的个数 类似https://www.cnblogs.com/patatoforsyj/p/9475383.html

代码如下:

class Solution {
    public int hammingDistance(int x, int y) {
      int cnt = 0;
        x=x^y;
        while(x!=0)
        {
            if((x&1)==1)
                cnt++;
            x=x>>1;
        }
        return cnt;
    }
}

 

以上是关于leetcode-汉明距离的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode #461 汉明距离

LeetCode 461. 汉明距离

LeetCode 477 汉明距离总和[数学 异或] HERODING的LeetCode之路

leetcode-汉明距离

LeetCode 0461. 汉明距离

LeetCode 0477. 汉明距离总和