一、题目描述
给出一个字符串,该字符串仅由小写字母组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个不同字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个字符串,计算每个字符串最大可能的“漂亮度”。
本题含有多组数据。
数据范围:输入的名字长度满足 1≤n≤10000
。
二、输入描述
第一行一个整数N,接下来N行每行一个字符串。
三、输出描述
每个字符串可能的最大漂亮程度。
四、解题思路
- 读取输入的整数 N,表示有多少个字符串;
- 使用循环读取每个字符串,并进行处理:
- 初始化一个长度为26的数组 counter,用于记录每个字母出现的次数;
- 遍历当前字符串的每个字符 c,将其对应的计数器加1;
- 创建一个动态数组 list,用于存储所有非零计数器的值;
- 将计数器数组中大于0的值加入 list 中;
- 对 list 进行降序排序,确保出现次数多的字母在前面;
- 初始化变量 point 为26,用于表示字母的漂亮度;
- 初始化变量 sum 为0,用于累计最大可能的漂亮度;
- 遍历 list,计算每个字母的漂亮度并累加到 sum 中;漂亮度计算方式为 (point - i) * list.get(i),其中 i 为当前字母在 list 中的索引ÿ