Leecode #451. 根据字符出现频率排序
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
示例 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的速度更快