461\. 汉明距离
# 461. 汉明距离 (opens new window)
# Description
Difficulty: 简单
Related Topics: 位运算 (opens new window)
两个整数之间的 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x
和 y
,计算并返回它们之间的汉明距离。
示例 1:
输入:x = 1, y = 4
输出:2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭头指出了对应二进制位不同的位置。
1
2
3
4
5
6
7
2
3
4
5
6
7
示例 2:
输入:x = 3, y = 1
输出:1
1
2
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24