P55 汉明距离
算法 14 阅读
信号摘要
难度:Easy · 时长:02:01 · leetcode 461 · lintcode 835
未对外公开播放权限
点击查看说明
描述
这个题目说的是,给你两个整数,你要计算出它们的二进制表示中,相应的二进制位有多少个是不同的。这个不同的个数,也称为这两个整数的汉明距离。
比如说,给你的两个整数是 3 和 8。它们的二进制表示分别是:3: 0011 8: 1000
这两个数有 3 个二进制位是不相同的,因此它们的汉明距离是 3。
相关视频:49. 二进制中 1 的个数
代码
public class AlgoCasts {
int numberOfOne(int n) {
int count = 0;
while (n != 0) {
++count;
n &= (n - 1);
}
return count;
}
public int hammingDistance(int x, int y) {
return numberOfOne(x ^ y);
}
}