黑马程序员技术交流社区

标题: 学习 [打印本页]

作者: 刘德坤    时间: 2015-10-17 00:17
标题: 学习
package com.itheima;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class Test33 {

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

           public static void main(String[] args) throws Exception
                {
                        System.out.println("Please Input String:");
                        BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
                        String line =null;
                        
                        while((line=bufr.readLine())!=null)
                        {
                            Count(line);
                        
                         
                        }
                }


                public static void Count(String line)
                {
                     char[] arr = line.toLowerCase().toCharArray();
                         int count = 0;
                         TreeMap<Character,Integer> tm = new TreeMap<>();
                         for(int i=0;i<arr.length;i++)
                         {
                            if(!tm.containsKey(arr[i]))
                                 tm.put(arr[i],1);
                                        
                                else
                                 {
                                        count = tm.get(arr[i]);
                                        count++;
                                        tm.put(arr[i],count);
                                 }
                         
                         }
                  
                          int[] num = new int[tm.size()];
                          int t = 0;
                   Set<Map.Entry<Character,Integer>> entrySet = tm.entrySet();
                   for(Map.Entry<Character,Integer> me : entrySet)
                          {
                                    System.out.println(me.getKey()+" : "+me.getValue());
                                    num[t]=me.getValue();
                                        t++;
                          }
                         
                          sort(num);
                         
                          count=0;
                          for(int i = 26,j=0;j<num.length;i--,j++)
                          {
                             count+=num[j]*i;
                         
                          }
                         
                          System.out.println("整个字符串最大可能的完美度为:"+count);
                }



          public static void sort(int[] num)
          {
             for(int i = 0;i<num.length-1;i++)
                          {
                               for(int j = 0;j<num.length-i-1;j++)
                                   {
                                      if(num[j]<num[j+1])
                                           {
                                             int temp = num[j+1];
                                                  num[j+1]= num[j];
                                                  num[j]=temp;
                                          }
                                   }
                          }
          
          }

}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2