51dev.com IT技术开发者社区

51dev.com 技术开发者社区

leetcode-汉明距离

IT猿阅读(59)2020-01-03 收藏0次评论

汉明距离

两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。

给出两个整数 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.51dev.com/suanfa/123876

代码如下:

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-汉明距离的全部内容。