题解 | 字符串出现次数的TopK问题

字符串出现次数的TopK问题

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

package main

import (
	"fmt"
	"sort"
)

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * return topK string
 * @param strings string字符串一维数组 strings
 * @param k int整型 the k
 * @return string字符串二维数组
 */

type pair struct {
    str string
    freq int
}

func topKstrings( strings []string ,  k int ) [][]string {
    strFreq := make(map[string]int)
    for _, str := range strings {
        strFreq[str]++
    }
    pairs := make([]pair, len(strFreq))
    for str, freq := range strFreq {
        pairs = append(pairs, pair{str, freq})
    }
    sort.Slice(pairs, func(i, j int) bool {
        if pairs[i].freq == pairs[j].freq {
            return pairs[i].str < pairs[j].str
        }
        return pairs[i].freq > pairs[j].freq
    })
    res := make([][]string, k)
    for i := 0; i < k; i++ {
        res[i] = []string{pairs[i].str, fmt.Sprintf("%d", pairs[i].freq)}
    }
    return res
}

全部评论

相关推荐

Sigma429:极兔啊,薪资开的巨低,还在上海,索性不做笔试了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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