LeetCode 461. Hamming Distance

撰写于 2017-11-03 修改于 2018-01-21 分类 LeetCode 标签 LeetCode

Question

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 < 2^31.

Example:

Input: x = 1, y = 4

Output: 2

Explanation:

1
2
3
1 (0 0 0 1)
4 (0 1 0 0)
^ ^

The above arrows point to positions where the corresponding bits are different.

Solution

The idea is easy to understand, you should use >> to get the newest value, if the value is an odd number, count += 1 , and number = number - 1 to make it even until to 0.

Code

python code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution(object):
def hammingDistance(self, x, y):
"""
:type x: int
:type y: int
:rtype: int
"""
z, count = x ^ y, 0
if z == 0:
return 0
elif z % 2 == 0:
return self.cal(z, count)
else:
count += 1
return self.cal(z, count)
def cal(self, z, count):
while z > 0:
z >>= 1
if z % 2 != 0:
count, z = count + 1, z - 1
return count
Site by GoingMyWay using Hexo & Random
备案号: 粤ICP备16087705号-1

I am a ML and RL research student

Hide