题解 | #字符统计#

字符统计

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-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务