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