两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数x
和 y
,计算它们之间的汉明距离。
注意:
- 0 ≤
x, y
< 231.
示例:
输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
上面的加粗字体指出了对应二进制位不同的位置。
/**
* @param {number} x
* @param {number} y
* @return {number}
*/
var hammingDistance = function(x, y) {
}
个人解法
var hammingDistance = function(x, y) {
//定义取余法将十进制数转为二进制
// 4 -> [0,0,1] 1 -> [1]
function quyufa(num){
var arr = [];
while(num !== 0){
arr.push(num % 2);
num = Math.floor(num / 2);
}
return arr;
}
var arrX = quyufa(x),
arrY = quyufa(y),
result = 0;
//将两个数组的长度转为相等
//4 -> [0,0,1] 1 -> [1,0,0]
while(arrX.length !== arrY.length){
var shortArr = arrX.length > arrY.length ? arrY : arrX;
shortArr.push(0);
}
//遍历每个元素,不一样的话result++
for(var i = 0; i < arrX.length; i ++){
if(arrX[i] !== arrY[i]){
result ++;
}
}
return result;
};