LeetCode 461. Hamming Distance
Created at 20171103 Updated at 20171107 Category 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:


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
.
Accepted Code
class Solutionclass 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