A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chen_32768 中级黑马   /  2014-11-25 22:02  /  1687 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 chen_32768 于 2014-11-25 22:46 编辑

.我们要给每个字母配一个1-26之间的整数,具体怎么分配由你决定,但不同字母的完美度不同, 而一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母大小写,也就是说字母F和f的完美度是一样的。 现在给定一个字符串,输出它的最大可能的完美度。 例如:dad,你可以将26分配给d,25分配给a,这样整个字符串最大可能的完美度为77。
  1. public class Num5 {
  2.         private static Scanner sc;

  3.         public static void main(String[] args) {
  4.                 sc = new Scanner(System.in);
  5.                 System.out.println("请输入字符串");
  6.                 String str = sc.nextLine();
  7.                 // 字符串转为char类型数组
  8.                 char[] arr = str.toCharArray();
  9.                 int x = 0;
  10.                 int[] irr = new int[26];
  11.                 // 从a开始比较
  12.                 for (char c = 'a'; c < 'z'; c++) {
  13.                         int count = 0;
  14.                         // 变量数组,查找相同的
  15.                         for (int i = 0; i < str.length(); i++) {
  16.                                 if (arr[i] == c) {
  17.                                         // System.out.println(i);
  18.                                         count++;
  19.                                 }
  20.                         }
  21.                         x++;
  22.                         // System.out.println("字母:" + c + "次数" + count);
  23.                         irr[x] = count;
  24.                 }
  25.                 // 自然排序
  26.                 Arrays.sort(irr);
  27.                 int sum = 0;
  28.                 int max = 1;
  29.                 // 第一位乘1,每位乘加1
  30.                 for (int i = 0; i < irr.length; i++) {
  31.                         // System.out.print(irr[i]);
  32.                         sum += irr[i] * (max + i);
  33.                 }
  34.                 System.out.println(sum);
  35.         }
  36. }
复制代码

评分

参与人数 1黑马币 +2 收起 理由
NCry + 2 赞一个!

查看全部评分

10 个回复

倒序浏览
赞赞一个。
回复 使用道具 举报
⊙﹏⊙b汗,题目你好歹说下啊。。。完美数是啥都没讲明白
回复 使用道具 举报
啥是完美数:(
回复 使用道具 举报
完美数就是随便给字母赋值,然后一个字符串的所有字母代表的值相加最大就是一个完美数。比如一个a,完美数就是26
回复 使用道具 举报
很好 学习了
回复 使用道具 举报
很好,学习了
回复 使用道具 举报
学习一下。。:P
回复 使用道具 举报
244611 来自手机 中级黑马 2014-11-26 00:58:30
9#
居然和我的一样。。。
回复 使用道具 举报
不明白说的撒
回复 使用道具 举报
完美数就是最多的值为26,,第二个值为25,,一次类推,然后26*出现次数+25*出现次数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马