题目
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y,计算它们之间的汉明距离。
示例
输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭头指出了对应二进制位不同的位置。
思路
先将数字转换为二进制,添加0前缀使两个二进制位数相同,再循环每个位数作对比
实现
var hammingDistance = function(x, y) {
let xBinary = x.toString(2)
let yBinary = y.toString(2)
let maxLength = xBinary.length > yBinary.length ? xBinary.length : yBinary.length
let count = 0
let prefixX = xBinary.length === maxLength ? xBinary : Array(maxLength - xBinary.length + 1).join(0) + xBinary
let prefixY = yBinary.length === maxLength ? yBinary : Array(maxLength - yBinary.length + 1).join(0) + yBinary
for (let i = 0; i < maxLength; i ++) {
if (prefixX[i] !== prefixY[i]) {
count++
}
}
return count
};