美文网首页LeetCode刷题
[LeetCode]461. 汉明距离

[LeetCode]461. 汉明距离

作者: 杏仁小核桃 | 来源:发表于2018-11-06 15:30 被阅读5次

461. 汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 xy,计算它们之间的汉明距离。
注意:
0 ≤ x, y < 231.
示例:
输入: x = 1, y = 2
输出: 2

解法1

将x, y的二进制转成字符串逐一比对.

class Solution:
    def hammingDistance(self, x, y):
        str_x = str(bin(x))[2:]
        str_y = str(bin(y))[2:]
        i = 1
        distance = 0
        while i <= len(str_x) and i <= len(str_y):
            if str_x[-i] != str_y[-i]:
                distance += 1
            i += 1       
        remain = max(len(str_x)-i+1,len(str_y)-i+1,0)
        long_s = ""
        if len(str_x) > len(str_y):
            long_s = str_x
        else:
            long_s = str_y
        for i in range(remain):
            if long_s[i] == "1":
                distance += 1
        return distance

解法2

用字符串的zfill()函数补充高位, 简化比较流程.

class Solution:
    def hammingDistance(self, x, y):
        str_x = str(bin(x))[2:]
        str_y = str(bin(y))[2:]
        str1 = str_x.zfill(32)
        str2 = str_y.zfill(32)
        distance = 0
        for i in range(32):
            if str1[i] != str2[i]:
                distance += 1
        return distance

解法3

用异或运算的特性, 相同位为0, 不同位为1, 只要算出异或结果的1的个数就行了.

class Solution:
    def hammingDistance(self, x, y):
        xor = list(bin(x^y))
        return xor.count('1')

相关文章

  • LeetCode 461.汉明距离

    ?博客原文 :《LeetCode 461.汉明距离 - JavaScript》 汉明距离定义:两个整数之间的汉明距...

  • TOP 91 - 95

    461. 汉明距离[https://leetcode-cn.com/problems/hamming-distan...

  • 力扣每日一题:461.汉明距离 细说异或与二进制 双解!

    461.汉明距离[https://leetcode-cn.com/problems/hamming-distanc...

  • 【LeetCode】461. 汉明距离

    LeetCode算法题目 题目 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数...

  • [LeetCode]461. 汉明距离

    461. 汉明距离两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计...

  • 【LeetCode】461. 汉明距离

    题目描述 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y,计算它们...

  • Leetcode 461. 汉明距离

    题目 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y,计算它们之间...

  • LeetCode 461. 汉明距离 Hamming Dista

    【题目描述】两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们...

  • 461. 汉明距离

    两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数x和y,计算它们之间的汉明距离。注...

  • 461. 汉明距离

    两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距...

网友评论

    本文标题:[LeetCode]461. 汉明距离

    本文链接:https://www.haomeiwen.com/subject/yjsuxqtx.html