[LeetCode]461. 汉明距离

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')
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • LeetCode算法题目 题目 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数...
    Shenjiming阅读 1,630评论 0 1
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,711评论 0 13
  • 原文首发于 baishusama.github.io,欢迎围观~肝不动业务代码的时候,就时不时地做个题吧/w\ 题...
    白蜀黍阅读 1,711评论 0 0
  • 在老T的开场,印象深刻的是关于思维模式的维度,想起几年前在博客上看到的这篇文章,人的五种思维模式,莫名的将两者联想...
    团的花园阅读 3,652评论 0 1
  • 小婵给我打来电话,声音里有些迫不及待:“姐,我剪了短发了,微信视频哈。”我还没来得及有什么反应,听筒那头只剩下“嘀...
    眠风听蝉阅读 2,773评论 2 4

友情链接更多精彩内容