avatar

day13_461_汉明距离

题目

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

给出两个整数 xy,计算它们之间的汉明距离。

注意:
0 ≤ x, y < 231.

示例:

1
2
3
4
5
6
7
8
9
10
输入: x = 1, y = 4

输出: 2

解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑

上面的箭头指出了对应二进制位不同的位置。

Related Topics

  • 位运算

思路

  1. 计算 xy 之间的汉明距离,可以先计算 x XOR y,然后统计结果中等于 1 的位数。

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 
//
// 给出两个整数 x 和 y,计算它们之间的汉明距离。
//
// 注意:
//0 ≤ x, y < 231.
//
// 示例:
//
//
//输入: x = 1, y = 4
//
//输出: 2
//
//解释:
//1 (0 0 0 1)
//4 (0 1 0 0)
// ↑ ↑
//
//上面的箭头指出了对应二进制位不同的位置。
//
// Related Topics 位运算


//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int hammingDistance(int x, int y) {
int res = x^y, i = 0;
while (res != 0){
if(res%2 == 1){
i++;
}
res = res >>1;
}
return i;

}
}
//leetcode submit region end(Prohibit modification and deletion)
文章作者: 无知的小狼
文章链接: https://bytedance.press/2020/05/08/20200501/day13_461_%E6%B1%89%E6%98%8E%E8%B7%9D%E7%A6%BB/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 无知的小狼

评论