题解 | #名字的漂亮度#
名字的漂亮度
https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
//计算每个字母出现的次数 将这些次数按照从大到小的顺序排序
//然后从26开始递减赋给漂亮度,出现次数最多的赋给漂亮度26
//采用map数据结构,key为字母,value为出现次数
package main
import (
"fmt"
"sort"
)
//漂亮度计算方法
func LofP(s string) int {
//定义一个map,计算所有字母出现的个数
m := make(map[string]int)
for i:=0; i<len(s); i++ {
temp := s[i:i+1]
_, ok := m[temp]
if ok {
m[temp] = m[temp]+1
}else {
m[temp] = 1
}
}
//fmt.Print(m)
//定义一个数组,存储所有字母出现的次数,并排序从大到小
countArray := make([]int, len(m))
for _, val := range m {
countArray = append(countArray, val)
}
//对数据进行排序 sort库实现就好了
sort.Ints(countArray)
//fmt.Print(countArray)
//计算漂亮值
lp := 26
LP := 0
for j:=len(countArray)-1; j>=0; j-- {
LP = LP + countArray[j]*lp
lp = lp-1
}
return LP
}
func main() {
var n int
fmt.Scan(&n)
input := make([]string, n)
for i:=0; i<n; i++ {
var temp string
fmt.Scan(&temp)
input[i] = temp
}
//fmt.Print(len(input))
for i:=0; i<n; i++ {
result := LofP(input[i])
fmt.Println(result)
}
}


