461. hamming distance

Description

Difficulty: Easy

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.

Solution

先转换为二进制,将短的一方补足位数(0),然后两个数字相加。若元素相同,结果 是 0 或者 2,因此返回合并数组中 1 的数量。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from operator import add
class (object):
def hammingDistance(self, x, y):
"""
:type x: int
:type y: int
:rtype: int
"""
if x == y:
return 0
x_s = [int(i) for i in bin(x)[2:]]
y_s = [int(i) for i in bin(y)[2:]]
if len(y_s) < len(x_s):
x_s, y_s = y_s, x_s
if len(x_s) < len(y_s):
x_s = [0] * (len(y_s) - len(x_s)) + x_s
comb = map(add, x_s, y_s)
return comb.count(1)