对一篇英文短文进行统计排序(标点不考虑)。生成这样的结果: 整理出现的26(也可能不足26)个字母,根据字母出现的数量由多到少排序。若数量相同则按照字母表顺序列。 生成的结果大致为“ffffffff...

 1 public class Z
 2 {
 3     /**
 4      * @对一篇英文短文进行统计排序(标点不考虑)。生成这样的结果:
 5      * 整理出现的26(也可能不足26)个字母,根据字母出现的数量由多到少排序。
 6      * 若数量相同则按照字母表顺序列出。
 7                      生成的结果大致为“ffffffffffffffffffffeeeeeeerrrrrrzzzzzzaaabbccu”。
 8      */
 9     public static void main(String[] args)
10     {
11         String input = getRandomStr(10);
12         System.out.println(input);
13         System.out.println(operate("基本信息HR简历编号姓名(与身份证护照一致)性别M国籍个人成就    2014年以Android App获得“创青春”全国大学生创业大赛移动互联网创业专项赛银奖并申请获得软件著作权"));
14     }
15     public static String operate(String input)
16     {
17         int[] times = new int[26];
18         char temp;
19         for (int i = 0;i<input.length();i++)
20         {
21             temp = filter(input.charAt(i));
22             if('a'<= temp && temp <= 'z')
23             {
24                 times[temp-'a']++;
25             }
26         }
27         StringBuilder res = new StringBuilder();
28         int maxTimes = Integer.MAX_VALUE;
29         int minIndex = 25;
30         while(maxTimes != 0)
31         {
32             maxTimes = 0;
33             minIndex = 25;
34             for(int i = 0; i < times.length; i++)
35             {
36                 if(times[i]==0)
37                     continue;
38                 if(times[i] > maxTimes)
39                 {
40                     maxTimes = times[i];
41                     minIndex = i;
42                 }    
43             }
44             for(int i = 0;i < maxTimes;i++)
45             {
46                 res.append((char)('a'+minIndex));
47             }
48             times[minIndex] = 0;
49         }
50         return res.toString();
51     }
52     public static char filter(char a)
53     {
54         if('A'<=a&&a<='Z')
55         {
56             a+='a'-'A';
57         }
58         return a;
59     }
60     /**
61      * @param N
62      * @产生长度为N的随机字母字符串
63      */
64     public static String getRandomStr(int N)
65     {
66         StringBuilder res =new StringBuilder();
67         for(int i= 0;i<N;i++)
68         {
69             char temp = (char) ('a'+Math.random()*26);
70             res.append(temp);
71         }
72         return res.toString();
73     
74     }
75 }

 

转载于:https://www.cnblogs.com/guizhongyi/p/4814302.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值