题解 | #名字的漂亮度#

名字的漂亮度

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

全部评论

相关推荐

面向对象的火龙果很爱...:去吃一顿炸鸡就走
点赞 评论 收藏
分享
06-26 22:20
门头沟学院 Java
码农索隆:让你把简历发给她,她说一些套话,然后让你加一个人,说这个人给你改简历,然后开始卖课
我的求职精神状态
点赞 评论 收藏
分享
05-30 12:03
山西大学 C++
offer来了我跪着...:不是骗子,等到测评那一步就知道为啥这么高工资了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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