leetcode1366

 1 class Solution:
 2     def rankTeams(self, votes: 'List[str]') -> str:
 3         dic = {}
 4         n = len(votes)
 5         m = len(votes[0])
 6         mat = [[0 for _ in range(26)] for _ in range(26)]
 7         for i in range(n):
 8             cur = votes[i]
 9             for j in range(m):
10                 vote = cur[j]
11                 code = ord(vote) - 65#row number
12                 mat[code][j] += 1
13         #print(mat)
14         for i in range(26):
15             key = ''
16             for j in range(26):
17                 cur = str(mat[i][j]).zfill(4)
18                 #print(cur)
19                 key += cur
20             #print(key)
21             if key != '0' * 26 * 4:
22                 if key not in dic:
23                     dic[key] = [chr(i + 65)]
24                 else:
25                     dic[key].append(chr(i + 65))
26         li = sorted(dic.items(),key=lambda x:x[0],reverse = True)
27         result = []
28         for l in li:
29             temp = sorted(l[1])
30             result += temp
31         return ''.join(result)

Algorithm idea: using a matrix of 26 * 26, a ranking of the number of times each character of each store.

Then traverse the matrix, each row, a key of 26 * 4, according to the reverse order key. The same key character, then arranged in alphabetic order.

Guess you like

Origin www.cnblogs.com/asenyang/p/12389522.html