Golang | Leetcode Golang题解之第451题根据字符出现频率排序

题目:

题解:

Go 复制代码
func frequencySort(s string) string {
    cnt := map[byte]int{}
    maxFreq := 0
    for i := range s {
        cnt[s[i]]++
        maxFreq = max(maxFreq, cnt[s[i]])
    }

    buckets := make([][]byte, maxFreq+1)
    for ch, c := range cnt {
        buckets[c] = append(buckets[c], ch)
    }

    ans := make([]byte, 0, len(s))
    for i := maxFreq; i > 0; i-- {
        for _, ch := range buckets[i] {
            ans = append(ans, bytes.Repeat([]byte{ch}, i)...)
        }
    }
    return string(ans)
}

func max(a, b int) int {
    if a > b {
        return a
    }
    return b
}
相关推荐
YGGP2 小时前
吃透 Golang 基础:数据结构之 Map
开发语言·数据结构·golang
march of Time2 小时前
go工具库:hertz api框架 hertz client的使用
开发语言·golang·iphone
dying_man3 小时前
LeetCode--24.两两交换链表中的结点
算法·leetcode
yours_Gabriel3 小时前
【力扣】2434.使用机器人打印字典序最小的字符串
算法·leetcode·贪心算法
余厌厌厌3 小时前
go语言学习 第9章:映射(Map)
服务器·学习·golang
roman_日积跬步-终至千里4 小时前
【Go语言基础【15】】数组:固定长度的连续存储结构
golang
GGBondlctrl5 小时前
【leetcode】递归,回溯思想 + 巧妙解法-解决“N皇后”,以及“解数独”题目
算法·leetcode·n皇后·有效的数独·解数独·映射思想·数学思想
cccc来财5 小时前
Go中的协程并发和并发panic处理
开发语言·后端·golang