给出一个字符串,该字符串仅由小写字母组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个不同字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个字符串,计算每个字符串最大可能的“漂亮度”。
本题含有多组数据。
数据范围:输入的名字长度满足
给出一个字符串,该字符串仅由小写字母组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个不同字母拥有相同的“漂亮度”。字母忽略大小写。
第一行一个整数N,接下来N行每行一个字符串
每个字符串可能的最大漂亮程度
2 zhangsan lisi
192 101
对于样例lisi,让i的漂亮度为26,l的漂亮度为25,s的漂亮度为24,lisi的漂亮度为25+26+24+26=101.
package main import ( "bufio" "fmt" "os" "sort" ) func main() { scanner := bufio.NewScanner(os.Stdin) scanner.Scan() for scanner.Scan() { input := scanner.Text() if input == "" { return } charMap := map[byte]int{} for i := 0; i < len(input); i++ { charMap[input[i]]++ } beautyList := []int{} for _, v := range charMap { beautyList = append(beautyList, v) } sort.Ints(beautyList) power := 26 res := 0 for i := len(beautyList) - 1; i >= 0; i-- { res += beautyList[i] * power power-- } fmt.Println(res) } }
package main import "fmt" func main(){ var n int fmt.Scanln(&n) for i := 0; i < n; i++{ var s string fmt.Scanln(&s) fmt.Println(pretty(s)) } } func pretty(s string)int{ m := map[byte]int{} for i := 0; i < len(s); i++{ m[s[i]] ++ } // 从map中逐个找出最大的 ans := 0 cursor := 26 for len(m) > 0{ var maxV int var maxB byte for k, v := range m{ if v > maxV{ maxV = v maxB = k } } delete(m, maxB) ans += cursor * maxV cursor -- } return ans }
package main import ( "bufio" "os" "fmt" "sort" ) func main(){ var param int var params []string fmt.Scan(¶m) input := bufio.NewScanner(os.Stdin) for input.Scan() && param > 0{ params = append(params, input.Text()) param-- } for loop:=0; loop< len(params); loop++{ BeautValu(params[loop]) } } func BeautValu(s string){ var str []int var res int var mostBeaut = 26 keyMap := make(map[string]int) for loop := 0 ;loop< len(s); loop++{ keyMap[string(s[loop])]++ } for _, value := range keyMap { str = append(str, value) } sort.Ints(str) for loop :=len(str) -1 ; loop >= 0 ; loop--{ res += str[loop] * mostBeaut mostBeaut-- } fmt.Println(res) }