Skip to content

461. 汉明距离

两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。

给你两个整数 xy,计算并返回它们之间的汉明距离。

示例 1:

输入:x = 1, y = 4
输出:2
解释:
1   (0 0 0 1)
4   (0 1 0 0)
       ↑   ↑
上面的箭头指出了对应二进制位不同的位置。

示例 2:

输入:x = 3, y = 1
输出:1

提示:

  • 0 <= x, y <= 231 - 1

一、解题

可打开浏览器控制台输入hammingDistance(4, 1)进行测试。

typescript
// https://leetcode.cn/problems/hamming-distance/description/

function hammingDistance(x: number, y: number): number {
  const xBinary = [];
  const yBinary = [];
  while (x >= 1 || y >= 1) {
    if (x >= 1) {
      xBinary.push(x % 2);
      x = Math.floor(x / 2);
    }
    if (y >= 1) {
      yBinary.push(y % 2);
      y = Math.floor(y / 2);
    }
  }

  let result = 0;
  const maxLen = Math.max(xBinary.length, yBinary.length);
  for (let i = 0; i < maxLen; i++) {
    if (!!xBinary[i] !== !!yBinary[i]) result ++;
  }
  return result;
};

console.log(hammingDistance(4, 1));