题解 | #名字的漂亮度#

名字的漂亮度

https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3

package main

import (
	"fmt"
	"sort"
)

func main() {
	var n int
	fmt.Scan(&n)
	strs := make([]string, n)
	for i := range strs {
		fmt.Scan(&strs[i])
	}
	// 处理
	for _, str := range strs {
		process(str)
	}
}

// 贪心,字母数量最多,漂亮度最大
func process(str string) {
	datas := make([]struct {
		letter byte
		count  int
	}, 0)
	// letter -> 在datas内存储到索引
	hash := make(map[byte]int)
	for i := range str {
		if idx, exist := hash[str[i]]; exist {
			datas[idx].count++
			continue
		}
		hash[str[i]] = len(datas)
		datas = append(datas, struct {
			letter byte
			count  int
		}{
			letter: str[i],
			count:  1,
		})
	}
	// 对datas 按count降序排序,而后计算漂亮度
	sort.Slice(datas, func(i, j int) bool {
		return datas[i].count > datas[j].count
	})
	ret := 0
	// 从26降序
	flag := 26
	for i := 0; i < len(datas); i++ {
		ret += datas[i].count * flag
		flag--
	}
	fmt.Println(ret)
}

全部评论

相关推荐

无敌虾孝子:喜欢爸爸还是喜欢妈妈
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务