Advertisement

LeetCode第451题字符频率排序(Python版)

阅读量:

题目描述

对于一个给定的字符串,要求将其中的字符依据其出现的次数从高到低进行排序

示例 :

输入:
“tree”
输出:
“eert”
解释:
字符'e'共出现两次,而'r'和't'各出现一次。因此,在排列时'e'应排在'r'和't'之前。同时,“eetr”也属于一种符合要求的排列方式。

解题思路

根据字符出现的次数进行排序,统计结果可借助字典结构进行存储,针对该问题可采用以下三种方式予以解决:
(1) 可调用Python语言内置的sort函数,对字符的出现频率进行排序处理
(2) 采用桶排序算法,将具有相同出现次数的字符归类至同一存储单元中,再依据频数高低依次提取各桶中的数据
(3) 借助最大堆结构,使堆顶始终为出现频数最高的字符,进而按照频数由高到低的顺序逐个提取字符

具体代码实现

方法一:运用排序函数进行操作

复制代码
    # 法一 调用sort函数
    class Solution(object):
    def frequencySort(self, s):
        """
        :type s: str
        :rtype: str
        """

全部评论 (0)

还没有任何评论哟~