首页 > 其他 > 详细

Total Hamming Distance

时间:2017-11-06 14:42:00      阅读:252      评论:0      收藏:0      [点我收藏+]
 1 class Solution(object):
 2     def totalHammingDistance(self, nums):
 3         """
 4         :type nums: List[int]
 5         :rtype: int
 6         """
 7         bin_num = ["{0:b}".format(num) for num in nums]
 8         zip_list = []
 9         for i in range(len(bin_num)):
10             for k in zip(bin_num, bin_num[i:]):
11                 zip_list.append(k)
12         count = 0
13         len_list = []
14         for x in zip_list:
15             for i in range(2):
16                 len_list.append(len(x[i]))
17         max_len = max(len_list)
18         zip_c = []
19         for c in zip_list:
20             tuple_to_list = list(c)
21             for i in range(2):
22                 if len(tuple_to_list[i]) < max_len:
23                     byte_num = max_len-len(c[i])
24                     tuple_to_list[i] = 0 * byte_num + str(tuple_to_list[i])
25             zip_c.append(tuple_to_list)
26         for new_c in zip_c:
27                 for j in range(max_len):
28                     if new_c[0][j] != new_c[1][j]:
29                         count = count+1
30         return count

更简便如下:

def totalHammingDistance(self, nums):
    return sum(b.count(0) * b.count(1) for b in zip(*map({:032b}.format, nums)))

 

Total Hamming Distance

原文:http://www.cnblogs.com/xz824/p/7792794.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!