题解 | #字符统计#

字符统计

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

package main

import (
	"fmt"
	"sort"
)

func main() {
    var input string
    fmt.Scan(&input)
    mymap:=make(map[rune]int)
    var runes []rune
    for _,v:=range input{
        // 找出一共有几个独特的rune
        if _,ok:=mymap[v];!ok{
            runes = append(runes, v)
        }
        // 充实对应rune出现的次数
        mymap[v]++
    }
    // 现在开始排序
    // 使用的slice方法,下面具体讲解一下
    sort.Slice(runes, func(i, j int) bool{
        // 该方法会根据后面这个回调函数return的bool值进行排序
        // 当runes前后两个rune在mymap中对应的出现次数相同的时候,则按照字典升序排
        if mymap[runes[i]]==mymap[runes[j]]{
            return runes[i]<runes[j]
        }
        // 默认情况下,按照rune在mymap中对应的出现次数降序排
        return mymap[runes[i]]>mymap[runes[j]]
    })
    fmt.Println(string(runes))

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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