
正文
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 }







