「每日LeetCode」2021年4月11日

本文最后更新于:2023年3月19日 晚上

面试题 05.06. 整数转换、Lt461. 汉明距离

面试题 05.06. 整数转换

整数转换。编写一个函数,确定需要改变几个位才能将整数 A 转成整数 B。
示例 1:

1
2
输入:A = 29 (或者0b11101), B = 15(或者0b01111
输出:2

示例 2:

1
2
输入:A = 1B = 2
输出:2

提示:

  1. A,B 范围在[-2147483648, 2147483647]之间

思路

461. 汉明距离

计算 AB 之间的汉明距离,可以先计算 A XOR B,然后统计结果中等于 1 的位数。

先求 A^B,再对结果的 1 计数即为汉明距离,res &= res - 1 会把最右边不同的一位变成 0,其他不变,用 count 进行 1 的计数。

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* @param {number} A
* @param {number} B
* @return {number}
*/
var convertInteger = function (A, B) {
let res = A ^ B;
let count = 0;
while (res) {
count++;
res &= res - 1;
}
return count;
};