461\. 汉明距离

# 461. 汉明距离 (opens new window)

# Description

Difficulty: 简单

Related Topics: 位运算 (opens new window)

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

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

示例 1:

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

示例 2:

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

提示:

  • 0 <= x, y <= 231 - 1

# Solution

Language: JavaScript

/**
 * @param {number} x
 * @param {number} y
 * @return {number}
 */
var hammingDistance = function(x, y) {
    let s = x ^ y, ret = 0;
    while (s != 0) {
        s &= s - 1;
        ret++;
    }
    return ret;
};


// 根据题意,要对比两个数二进制形态不同的位数,想到使用异或位运算,各位运算后相同的为0,不同的为1。得到10进制结果后,转为二进制字符串,统计其中1的个数,即为汉明距离。


var hammingDistance = function(x, y) {
    return (x^y).toString(2).split('').filter(i => i === '1').length
};



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
上次更新: 2022/8/25 下午5:12:12