451.根据字符出现频率排序 发表于 2021-07-03 分类于 LeetCode LeetCode每日一题之451.根据字符出现频率排序。 今天这题比较简单,周六愉快 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。 0.0.1. 题目示例 1:123456789输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。 示例 2: 12345678910输入:"cccaaa"输出:"cccaaa"解释:'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。注意"cacaca"是不正确的,因为相同的字母必须放在一起。 示例 3: 123456789输入:"Aabb"输出:"bbAa"解释:此外,"bbaA"也是一个有效的答案,但"Aabb"是不正确的。注意'A'和'a'被认为是两种不同的字符。 0.0.2. 我的解法123456789101112131415161718192021222324252627class Solution(object): def frequencySort(self, s): """ :type s: str :rtype: str """ # 哈希表 d = {} for ch in s: if not ch in d: d[ch] = 1 else: d[ch] += 1 # 把字典按value的大小从大到小排序 a = sorted(d.items(), key=lambda x: x[1], reverse=True) res = "" for aa in a: # 小坑:出现多次的字母需要+=多次 for i in range(aa[1]): res += str(aa[0]) return res 但是因为相当于最多遍历了两次字典,时间还是比较慢的平平无奇小代码吧。。 本文作者: odcowl 本文链接: http://example.com/2021/07/03/451-根据字符出现频率排序/ 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!