【LeetCode】461. 汉明距离

2018-08-28  本文已影响10人  Shenjiming

LeetCode算法题目

题目

两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。

给出两个整数 xy,计算它们之间的汉明距离。

注意:
0 ≤ x, y < 2^{31}.
示例 :

输入: x = 1, y = 4

输出: 2

解释:
1   (0 0 0 1)
4   (0 1 0 0)
       ↑   ↑

上面的箭头指出了对应二进制位不同的位置。

解答

Python3

方法一:

class Solution:
    def hammingDistance(self, x, y):
        """
        :type x: int
        :type y: int
        :rtype: int
        """
        #自定义十进制转二进制函数
        def dec2bin(num):
            num_bin = []
            while num!= 0:
                num_bin.append(num%2)
                num = num // 2
            return num_bin[::-1]
        x_bin = dec2bin(x)
        y_bin = dec2bin(y)
        while len(x_bin) != len(y_bin):
            if len(x_bin) < len(y_bin):
                x_bin.insert(0,0)
            else:
                y_bin.insert(0,0)
        num = 0
        for i in range(len(x_bin)): 
            if x_bin[i] != y_bin[i]:
                num += 1
        return num

方法二:

class Solution:
    def judgeCircle(self, moves):
        """
        :type moves: str
        :rtype: bool
        """
        return list(bin(x^y)).count('1')
上一篇 下一篇

猜你喜欢

热点阅读