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)的桶排序做法,以后再研究

results matching ""

    No results matching ""