题解 | 名字的漂亮度
名字的漂亮度
https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = Integer.parseInt(in.nextLine());
List<String> names = new ArrayList<>();
for (int i = 0; i < n; i++) {
names.add(in.nextLine());
}
for (String name : names) {
System.out.println(CalBeauty(name));
}
}
public static int CalBeauty(String name) {
int[] charNum = new int[26];
for (int i = 0; i < name.length(); i++) {
char c = name.charAt(i);
charNum[c - 'a']++;
}
Arrays.sort(charNum);
int beauty = 0;
for (int i = 26; i > 0; i--) {
int n = charNum[i - 1];
if (n == 0) {
//快速结束.
break;
}
beauty += i * n;
}
return beauty;
}
}
还有这么简单的贪心题目!
类似哈夫曼编码思想,把出现最多的字母赋最大的漂亮值,把出现次最多的字母赋次最大的漂亮值,直到26个字母都分配完毕~
#你觉得大几开始实习最合适?#常规算法题目专栏 文章被收录于专栏
这里记录一些常规的算法题目题解,主要包括中等难度,还有一些有意思的题目~
查看16道真题和解析

