列表

详情


461. 汉明距离

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

给你两个整数 xy,计算并返回它们之间的汉明距离。

 

示例 1:

输入:x = 1, y = 4
输出:2
解释:
1   (0 0 0 1)
4   (0 1 0 0)
       ↑   ↑
上面的箭头指出了对应二进制位不同的位置。

示例 2:

输入:x = 3, y = 1
输出:1

 

提示:

相似题目

位1的个数

汉明距离总和

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int hammingDistance(int x, int y) { } };

php 解法, 执行用时: 12 ms, 内存消耗: 15.3 MB, 提交时间: 2021-05-12 16:20:54

class Solution {

    /**
     * @param Integer $x
     * @param Integer $y
     * @return Integer
     */
    function hammingDistance($x, $y) {
        $n = $x ^ $y;
        $ans = 0;
        while ( $n ) {
            $ans += $n & 1;  // 最低位是1, 则与1为1, 否则为0
            $n >>= 1;  // 右移1位   
        }
        return $ans;
    }
}

golang 解法, 执行用时: 0 ms, 内存消耗: N/A, 提交时间: 2018-08-25 12:58:31

func hammingDistance(x int, y int) int {
    n := x ^ y;
    c := 0;
    for {        
        if n == 0 {
            break;
        }
        n &= n - 1;
        c = c + 1;
    }
    return c;
}

cpp 解法, 执行用时: 4 ms, 内存消耗: N/A, 提交时间: 2018-08-25 12:47:37

class Solution {
public:
    int hammingDistance(int x, int y) {
        int n = x ^ y;
        int count(0);
        while (n != 0)
        {
            n &= n - 1;
            ++count;
        }
        return count;
    }
};

javascript 解法, 执行用时: 100 ms, 内存消耗: N/A, 提交时间: 2018-08-25 12:44:44

/**
 * @param {number} x
 * @param {number} y
 * @return {number}
 */
var hammingDistance = function(x, y) {
    var c = (x ^ y).toString(2);
    return c.replace(/0/g, '').length;
};

python 解法, 执行用时: 24 ms, 内存消耗: N/A, 提交时间: 2018-08-25 12:39:55

class Solution(object):
    def hammingDistance(self, x, y):
        """
        :type x: int
        :type y: int
        :rtype: int
        """
        return len(bin(x ^ y)[2:].replace('0', ''))
        
        

上一题