题解 | #名字的漂亮度#

名字的漂亮度

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)
}

全部评论

相关推荐

09-19 14:17
门头沟学院 Java
点赞 评论 收藏
分享
码农索隆:1.照片换成证件照。 2.专业技能写的太少了,太单薄了。 3.项目经历描写的太冗余,分成几点。 4.无实习经历,看看能不能包一个。
点赞 评论 收藏
分享
09-09 06:44
已编辑
浙江大学 深度学习
无敌王八拳:貌似10月线下面?
投递华为技术有限公司等公司10个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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