题解 | #名字的漂亮度#

名字的漂亮度

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

全部评论

相关推荐

昨天 13:08
蚌埠坦克学院 C++
服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务