Leecode #451. 根据字符出现频率排序

少于 1 分钟读完

给定一个字符串,请将字符串里的字符按照出现的频率降序排列。

示例 1:

输入: “tree”

输出: “eert”

解释: ‘e’出现两次,’r’和’t’都只出现一次。 因此’e’必须出现在’r’和’t’之前。此外,”eetr”也是一个有效的答案。

非常简单,主要是熟悉python的两个库吧

class Solution:
    def frequencySort(self, s: str) -> str:
                return ''.join([i * j for i, j in collections.Counter(s).most_common()])
                
    def frequencySort(self, s: str) -> str:
        import heapq
        from collections import Counter
        count = Counter(s)
        lst = []
        for i in count:
            heapq.heappush(lst, (-count[i], count[i]*i))
        return ''.join([heapq.heappop(lst)[1] for _ in range(len(lst))])

用Counter.most_common的速度更快

分类:

更新时间: