码迷,mamicode.com
首页 > 其他好文 > 详细

Total Hamming Distance

时间:2017-11-06 15:07:03      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:gdi   div   logs   sel   append   ret   min   zip   style   

 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

标签:gdi   div   logs   sel   append   ret   min   zip   style   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!