LeetCode-Q451-Sort Characters By Frequency

最近加入了一个每日一题的刷题群,在上面领教了很多大牛的思路和代码,觉得获益颇丰,自己也通过学习大牛的代码来总结。


  • 自己思路
    1、利用字典建立哈希表,遍历字符串记录每个字符的出现的次数。
    2、对字典进行排序
    3、依次输出频数从大到小的字符拼接成结果输出。
  • 参考
    在建立hash_map之后,可不用对字典进行排序(增加时间复杂度)。

  • 代码

class Solution(object):
    def frequencySort(self,s):
        hash_map = {}
        res = ""        
        #建立hash_map     
        for char in s:
            if char not in hash_map:
                hash_map[char] = s.count(char)
        #不断找出hash_map中频次最高的字符,拼接后pop
        while(hash_map):    
            max_frequency = max(hash_map.values())
            index = list(hash_map.keys())[list(hash_map.values()).index(max_frequency)]
            res += index*max_frequency
            hash_map.pop(index)
        return res
  • 总结
    除了哈希表的方法,还有桶排序和堆排序(建立最大堆)的方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值