Sort Characters By Frequency
首先想到的不是堆而是自定义排序,自己建了一个Char的namedtuple
class Solution(object):
def frequencySort(self, s):
"""
:type s: str
:rtype: str
"""
store = collections.Counter(s)
Char = collections.namedtuple('Char', ['letter', 'count'])
tmp = []
for key, value in store.items():
tmp.append(Char(key, value))
tmp.sort(cmp=lambda x, y: cmp(y.count, x.count))
result = ''
for char in tmp:
result += (char.letter * char.count)
return result
如果用堆来做这道题实际上也是一样的,没有太大区别,还有一种O(n)的桶排序做法,以后再研究