Java面试基础--(出现次数最多的字符串)

题目:给定字符串,求出现次数最多的那个字母及次数,如有多个 重复则都输出。

eg,String data ="aaavzadfsdfsdhshdWashfasdf";

思路:

1.引入TreeSet,通过集合快速找到所有出现的字符串;

2,引入ArrayList:为了快速排序,再通过StringBuffer生成排序后的字符串;

3,通过String api中的基本方法 indeOf() lastIndexOf()来计算TreeSet中每个字符串的最大值;

4,如果出现相同的则把相同的都记录在一个列表中,

5,记录第一个出现次数最多的字符(为了计算多个字符串相同的情况)

6,计算最大字符串列表中哪些才是真正出现次数最多的。

 1 import java.util.*;
 2 
 3 public class MaxStringNumber {
 4 
 5     public static void main(String[] args) throws Exception{
 6         String input ="aaavzadfsdfsdhshdWashfasdf";
 7         new MaxStringNumber().doString(input);
 8         
 9     }
10 
11     public void doString(String input) {
12         // TODO Auto-generated method stub
13         char [] chars = input.toCharArray();
14         ArrayList lists = new ArrayList();
15         TreeSet set = new TreeSet();
16         for(int i = 0;i<chars.length;i++){
17             lists.add(String.valueOf(chars[i]));
18             set.add(String.valueOf(chars[i]));
19         }
20         
21         System.out.println(set);
22         Collections.sort(lists);
23         System.out.println(lists);
24         
25         StringBuffer sb = new StringBuffer();
26         for(int i=0;i<lists.size();i++){
27             sb.append(lists.get(i));
28         }
29         
30         input = sb.toString();
31         System.out.println(input);
32         int max = 0;
33         String maxString = "";
34         ArrayList maxlist =new ArrayList();
35         
36         Iterator its = set.iterator();
37         while(its.hasNext()){
38             String os = (String)its.next();
39             int begin = input.indexOf(os);
40             int end = input.lastIndexOf(os);
41             int value = end -begin +1;
42             if(value >max){
43                 max =value;
44                 maxString = os;
45                 maxlist.add(os);
46             }else if(value == max){
47                 maxlist.add(os);
48             }
49         }
50         int index = 0;
51         for(int i= 0;i<maxlist.size();i++){
52             if(maxlist.get(i).equals(maxString)){
53                 index =i;
54                 break;
55             }
56         }
57         
58         System.out.println("出现最多的字符分别为:");
59         for(int i=index;i<maxlist.size();i++){
60             System.out.println(maxlist.get(i)+" ");
61         }
62         System.out.println();
63         
64         System.out.println("出现最多的次数为: "+max);
65         
66         
67     }
68 }
原文地址:https://www.cnblogs.com/happinessqi/p/3434497.html