题解 | #名字的漂亮度#
名字的漂亮度
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) } }