汉明距离
题目:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231
输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭头指出了对应二进制位不同的位置。
思路:
代码:
- 布赖恩·克尼根算法
1 /** 2 * @param {number} x 3 * @param {number} y 4 * @return {number} 5 */ 6 var hammingDistance = function(x, y) { 7 var result = x ^ y; 8 var count = 0; 9 while(result){ 10 result = result & (result-1); 11 count++; 12 } 13 return count; 14 };
- eval()运算符不推荐使用
1 /** 2 * @param {number} x 3 * @param {number} y 4 * @return {number} 5 */ 6 var hammingDistance = function(x, y) { 7 return (x ^ y).toString(2).replace(/0/g, '').length 8 };

浙公网安备 33010602011771号