1. leetcode 461 求2个数字之间的汉明距离
这种写法其实的最好的:
return bin(x ^ y).count('1')
class Solution:
def hammingDistance(self, x: int, y: int) -> int:
# 求出y的长度,然后再把x补充相应的长度。
# 找出2个数中较大的数
if x > y:
x, y = y, x
res = 0
m = bin(x)[2:]
n = bin(y)[2:]
l = len(n)
# print(m.zfill(l))
# print(n)
for i, j in zip(m.zfill(l), n):
if i != j:
res += 1
# print(res)
return res
2. 求2个相等长度的字符串之间的汉明距离
"""
# 计算韩明距离
# 所谓 汉明距离:
# 对于二进制字符串a与b来说,它等于a 异或b以后所得二进制字符串中“1”的个数。
# https://zh.wikipedia.org/wiki/%E6%B1%89%E6%98%8E%E8%B7%9D%E7%A6%BB
# 字符串--->阿斯卡 ---> binary value
# [https://cryptopals.com/sets/1/challenges/6](https://cryptopals.com/sets/1/challenges/6)
"""
a = 'this is a test'
b = 'wokka wokka!!!'
def hamming(a, b):
m = ''.join([format(ord(i), 'b').zfill(8) for i in a])
n = ''.join([format(ord(i), 'b').zfill(8) for i in b])
print(m)
print(n)
want = 0
for r, t in zip(m, n):
if r != t:
want += 1
print(want)
return want
hamming(a, b) # 37