461. 汉明距离(JavaScript)
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x
和 y
,计算它们之间的汉明距离。
注意:
0 ≤ x
, y
< 231.
示例:
输入: x = 1, y = 4 输出: 2 解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的箭头指出了对应二进制位不同的位置。
思路:
先将两个数字转换成二进制字符串(使用 toString(2)),然后将短的字符串用 0 在头部补齐。最后循环遍历,不等就将计数值count++。
/**
* @param {number} x
* @param {number} y
* @return {number}
*/
var hammingDistance = function(x, y) {
var xb = x.toString(2),
yb = y.toString(2);
var xl = xb.length,
yl = yb.length;
var count = 0; // 记录不一样的个数
// 将短的字符串用 0 补齐
if (xl > yl) {
yb = Array(xl - yl + 1).join('0') + yb;
} else {
xb = Array(yl - xl + 1).join('0') + xb;
}
for (var i in xb) {
if (xb[i] !== yb[i]) {
count ++;
}
}
return count;
};