LeetCode 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.

#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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章