注意: 0 ≤ x, y < 231.
输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭头指出了对应二进制位不同的位置。
将两个数字进行异或, 就保留了所有两个数字位不同的位置. 然后问题就转化为了计算异或结果中一比特数的数量.
class Solution:
def hammingDistance(self, x: int, y: int) -> int:
z = x ^ y
count = 0
while z != 0:
z &= (z - 1)
count += 1
return count