题解 | #字符统计#

字符统计

https://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0

package main

import (
    "fmt"
    "sort"
)

type LetterCnt struct {
    Ch byte
    Cnt int
}

func calculate(s string) {
    m := make(map[byte]int, 0)
    for i:=0; i<len(s); i++ {
        m[s[i]]++
    }

    var letters []LetterCnt
    for k, v := range m {
        letters = append(letters, LetterCnt{Ch: k, Cnt: v})
    }

    sort.Slice(letters, func(i, j int) bool {
        if letters[i].Cnt == letters[j].Cnt {
            return letters[i].Ch < letters[j].Ch
        }

        return letters[i].Cnt > letters[j].Cnt
    })

    for _, letter := range letters {
        fmt.Printf("%c", letter.Ch)
    }
}

func main() {
    var s string
    fmt.Scan(&s)

    calculate(s)
}
// 本题输入一个字符串,所以采用:fmt.Scan(&s)

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 11:31
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 12:04
毕业生招你惹你了,问一个发薪日来一句别看网上乱七八糟的你看哪个工作没有固定发薪日扭头就取消了面试就问了一句公司都是这个态度吗还搞上人身攻击了...
程序员小白条:呃呃呃,都还没面试,我都不会问这么细,何况通不通过,去不去都另说,你没实力和学历的话,在外面就这样,说实话没直接已读不回就不错了,浪费时间基本上
点赞 评论 收藏
分享
06-12 10:50
门头沟学院 Java
你的不定积分没加C:我怎么在学院群看到了同样的话
点赞 评论 收藏
分享
06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务