美文网首页
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