leetcode-461-汉明距离 题目 你的鼓励也是我创作的动力
目录
- Posted by 微博@Yangsc_o
- 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0
本题是leetcode,地址:461. 汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y,计算它们之间的汉明距离。
注意:
0 ≤ x, y < 231.示例:
输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑上面的箭头指出了对应二进制位不同的位置。
分析
对于二进制串a和b来说,汉明距离等于aXORb中1的数目,例如0100→1001 (红色)的汉明距离是 3; 0110→1110 (蓝色)的汉明距离是 1;
code
public static int hammingDistance(Long v1, Long v2) {
int dis = 0;
int val = (int) (v1 ^ v2);
while (val != 0) {
dis ++;
val &= val - 1;
}
return dis;
}
public static void main(String[] args) {
Long v1 = 1L;
Long v2 = 2L;
int haming = hammingDistance(v1,v2);
System.out.println();
}