题解 | #名字的漂亮度#
名字的漂亮度
https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
import java.util.Scanner;
import java.util.HashMap;
import java.util.Arrays;
//数组解决方案 时间复杂度为O(n)
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
String[] input=new String[N];
for(int i=0;i<N;i++){
input[i]=in.next();
System.out.println(prettyLevel(input[i]));
}
}
static int prettyLevel(String s){
int[] dict=new int[26];
//将字符串中的各位字符与26位字母进行对比并计数
for(int i=0;i<s.length();i++){
if(s.charAt(i)>='a'&&s.charAt(i)<='z'){
dict[s.charAt(i)-'a']++;
}
if(s.charAt(i)>='A'&&s.charAt(i)<='Z'){
dict[s.charAt(i)-'A']++;
}
}
Arrays.sort(dict);
int sum=0;
for(int j=0;j<26;j++){
//排序后从升序数组最后一位开始降序计算漂亮度
sum+=dict[25-j]*(26-j);
}
return sum;
}
}
查看24道真题和解析