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.
#coding=utf-8
'''
題目中解釋的很清楚了,兩個數字之間的漢明距離就是其二進制數對應位不同的個數,那麼最直接了當的做法就是按位分別取出兩個數對應位上的數並異或,
我們知道異或的性質上相同的爲0,不同的爲1,我們只要把爲1的情況累加起來就是漢明距離了
'''
class Solution(object):
def hammingDistance(self, x, y):
"""
:type x: int
:type y: int
:rtype: int
"""
s = bin(x^y)[2:]
count = 0
for i in s:
if i == '1':
count += 1
return count
class Solution2(object):
def hammingDistance(self, x, y):
"""
:type x: int
:type y: int
:rtype: int
"""
count = 0
exc = x ^ y
while exc > 0:
exc = exc & (exc-1) #移除最後一個1
count+=1
return count
if __name__ == '__main__':
print Solution().hammingDistance(1,4)
print Solution2().hammingDistance(1,4)