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
}
相关推荐
Dream it possible!1 小时前
LeetCode 热题 100_只出现一次的数字(96_136_简单_C++)(哈希表;哈希集合;排序+遍历;位运算)
c++·leetcode·位运算·哈希表·哈希集合
每天一个秃顶小技巧4 小时前
02.Golang 切片(slice)源码分析(一、定义与基础操作实现)
开发语言·后端·python·golang
恋喵大鲤鱼4 小时前
Golang 空结构体特性与用法
golang·空结构体
MarkHard1236 小时前
Leetcode (力扣)做题记录 hot100(34,215,912,121)
算法·leetcode·职场和发展
Kidddddult8 小时前
力扣刷题Day 46:搜索二维矩阵 II(240)
算法·leetcode·力扣
q567315238 小时前
Go语言多线程爬虫与代理IP反爬
开发语言·爬虫·tcp/ip·golang
Chandler248 小时前
Go语言即时通讯系统 开发日志day1
开发语言·后端·golang
是代码侠呀12 小时前
从前端视角看网络协议的演进
leetcode·开源·github·github star·github 加星
李匠202413 小时前
C++GO语言微服务基础技术②
开发语言·c++·微服务·golang
BUG制造机.13 小时前
Go 语言 slice(切片) 的使用
开发语言·后端·golang