题解 | #名字的漂亮度#
名字的漂亮度
https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
package main
import (
"fmt"
"sort"
)
type ByteCount struct {
Ch byte
Cnt int
}
func calculatePretty(s string) int {
m := make(map[byte]int, 0)
for i:=0; i<len(s); i++ {
if _, ok := m[s[i]]; !ok {
m[s[i]] = 1
} else {
m[s[i]] += 1
}
}
var byteCountList []ByteCount
for k, v := range m {
byteCountList = append(byteCountList, ByteCount{Ch: k, Cnt: v})
}
sort.Slice(byteCountList, func(i, j int) bool {
return byteCountList[i].Cnt > byteCountList[j].Cnt
})
var sum int
prettyValue := 26
for _, byteCount := range byteCountList {
sum += byteCount.Cnt * prettyValue
prettyValue--
}
return sum
}
func main() {
var n int
fmt.Scan(&n)
for i:=0; i<n; i++ {
var s string
fmt.Scan(&s)
fmt.Println(calculatePretty(s))
}
}
// 本题每行为一个字符串(只包含小写字母),所以采用:fmt.Scan(&s)

