461. Hamming Distance
The Hamming distance between two integers is the number of positions at which the corresponding bits are different.
Given two integers x
and y
, calculate the Hamming distance.
Note:
0 ≤ x
, y
< 231.
Example:
Input: x = 1, y = 4
Output: 2
Explanation:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
The above arrows point to positions where the corresponding bits are different.
Idea
先把两个数字的二进制数的长度变成一致的(前面补0,在python中可以用str.zfill(len)函数),
事实上,求汉明距离就是求 两个数字异或后的结果中1的个数, 用异或可以简化求解
Code
class Solution:
def hammingDistance(self, x, y):
"""
:type x: int
:type y: int
:rtype: int
"""
#return bin(x^y).count('1')
# 把二进制长度变成一致的,前面补0,str.zfill(len)
if x == y:
return 0
x = bin(x)[2:] #去除前面两个字符'0b'
y = bin(y)[2:]
x = x.zfill(max(len(x), len(y))) #zfill(),只适用于字符串
y = y.zfill(max(len(x), len(y)))
count = 0
for i in range(len(x)):
if x[i] != y[i]:
count += 1
return count