美文网首页
451. 根据字符出现频率排序(Python)

451. 根据字符出现频率排序(Python)

作者: 玖月晴 | 来源:发表于2020-10-09 18:47 被阅读0次

题目

难度:★★☆☆☆
类型:字符串
方法:统计

力扣链接请移步本题传送门
更多力扣中等题的解决方案请移步力扣中等题目录

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

示例 1:

输入:
"tree"

输出:
"eert"

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

示例 2:

输入:
"cccaaa"

输出:
"cccaaa"

解释:
'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。
注意"cacaca"是不正确的,因为相同的字母必须放在一起。

示例 3:

输入:
"Aabb"

输出:
"bbAa"

解释:
此外,"bbaA"也是一个有效的答案,但"Aabb"是不正确的。
注意'A'和'a'被认为是两种不同的字符。

解答

这道题很简单,用字典统计每一个字符出现的次数并按照次数降序排列,再次合并即可。

class Solution:
    def frequencySort(self, s: str) -> str:
        freq = {c: 0 for c in [chr(i) for i in range(128)]}
        for c in s:
            freq[c] += 1
        selected = sorted([(k, v) for k, v in freq.items() if v > 0], key=lambda x: x[1], reverse=True)
        return ''.join([k * v for k, v in selected])

如有疑问或建议,欢迎评论区留言~

有关更多力扣中等题的python解决方案,请移步力扣中等题解析

相关文章

网友评论

      本文标题:451. 根据字符出现频率排序(Python)

      本文链接:https://www.haomeiwen.com/subject/doeeuktx.html