黑马程序员技术交流社区
标题:
发一个关于求完美数的方法,基础测试题
[打印本页]
作者:
chen_32768
时间:
2014-11-25 22:02
标题:
发一个关于求完美数的方法,基础测试题
本帖最后由 chen_32768 于 2014-11-25 22:46 编辑
.我们要给每个字母配一个1-26之间的整数,具体怎么分配由你决定,但不同字母的完美度不同, 而一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母大小写,也就是说字母F和f的完美度是一样的。 现在给定一个字符串,输出它的最大可能的完美度。 例如:dad,你可以将26分配给d,25分配给a,这样整个字符串最大可能的完美度为77。
public class Num5 {
private static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
System.out.println("请输入字符串");
String str = sc.nextLine();
// 字符串转为char类型数组
char[] arr = str.toCharArray();
int x = 0;
int[] irr = new int[26];
// 从a开始比较
for (char c = 'a'; c < 'z'; c++) {
int count = 0;
// 变量数组,查找相同的
for (int i = 0; i < str.length(); i++) {
if (arr[i] == c) {
// System.out.println(i);
count++;
}
}
x++;
// System.out.println("字母:" + c + "次数" + count);
irr[x] = count;
}
// 自然排序
Arrays.sort(irr);
int sum = 0;
int max = 1;
// 第一位乘1,每位乘加1
for (int i = 0; i < irr.length; i++) {
// System.out.print(irr[i]);
sum += irr[i] * (max + i);
}
System.out.println(sum);
}
}
复制代码
作者:
kerner
时间:
2014-11-25 22:04
赞赞一个。
作者:
冥夜
时间:
2014-11-25 22:21
⊙﹏⊙b汗,题目你好歹说下啊。。。完美数是啥都没讲明白
作者:
DamonZh
时间:
2014-11-25 22:28
啥是完美数:(
作者:
NCry
时间:
2014-11-25 23:00
完美数就是随便给字母赋值,然后一个字符串的所有字母代表的值相加最大就是一个完美数。比如一个a,完美数就是26
作者:
cgsilen
时间:
2014-11-25 23:02
很好 学习了
作者:
夏至落叶
时间:
2014-11-25 23:17
很好,学习了
作者:
处之泰然
时间:
2014-11-25 23:34
学习一下。。:P
作者:
244611
时间:
2014-11-26 00:58
居然和我的一样。。。
作者:
关军波
时间:
2014-11-26 08:29
不明白说的撒
作者:
chen_32768
时间:
2014-11-26 21:12
完美数就是最多的值为26,,第二个值为25,,一次类推,然后26*出现次数+25*出现次数
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2