package Day42;
//程序分析:找最大漂亮度,应该先排序,谁出现的次数最多赋值为26,然后依次递减
/*给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个名字,计算每个名字最大可能的“漂亮度”。*/
import java.lang.reflect.Array;
import java.util.*;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
//System.out.println("输入的名字个数");
int n= sc.nextInt();
for(int i=0;i<n;i++)
{
//System.out.println("输入名字");
String str = sc.next();//输入字符串
piao(str);
}
}
public static void piao(String str)
{
char[] ch =new char[26];
for(int i=0;i<ch.length;i++)
{
ch[0]='a';
ch[i]=(char) (ch[0]+i);//将a-z存入字符数组中
}
int[] arr = new int[26];
int[] index = new int[str.length()];
for(int i=0;i<index.length;i++)//初始化原下标数组
{
index[i]=i;
}
for(int i=0;i<26;i++)//初始化库26个元素个数全部为0;
{
arr[i]=0;
}
char[] ch1=str.toCharArray();
for(int i=0;i<ch1.length;i++)//输入字符个数
{
for(int j=0;j<ch.length;j++)//与库比较,得到各个字符出现的个数
{
if(ch[j]==ch1[i])
{
arr[j]++;
}
}
}
Arrays.sort(arr);
int sum=0;
for(int i=0;i<26;i++)
{
sum=sum+arr[i]*(i+1);
}
System.out.println(sum);
}
}
找到名字的漂亮度
最新推荐文章于 2021-07-16 11:50:11 发布