您的位置:首页 > 职场人生

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

2013-11-20 22:36 661 查看
题目:给定字符串,求出现次数最多的那个字母及次数,如有多个 重复则都输出。

eg,String data ="aaavzadfsdfsdhshdWashfasdf";

思路:

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

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

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

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

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

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

import java.util.*;

public class MaxStringNumber {

public static void main(String[] args) throws Exception{
String input ="aaavzadfsdfsdhshdWashfasdf";
new MaxStringNumber().doString(input);

}

public void doString(String input) {
// TODO Auto-generated method stub
char [] chars = input.toCharArray();
ArrayList lists = new ArrayList();
TreeSet set = new TreeSet();
for(int i = 0;i<chars.length;i++){
lists.add(String.valueOf(chars[i]));
set.add(String.valueOf(chars[i]));
}

System.out.println(set);
Collections.sort(lists);
System.out.println(lists);

StringBuffer sb = new StringBuffer();
for(int i=0;i<lists.size();i++){
sb.append(lists.get(i));
}

input = sb.toString();
System.out.println(input);
int max = 0;
String maxString = "";
ArrayList maxlist =new ArrayList();

Iterator its = set.iterator();
while(its.hasNext()){
String os = (String)its.next();
int begin = input.indexOf(os);
int end = input.lastIndexOf(os);
int value = end -begin +1;
if(value >max){
max =value;
maxString = os;
maxlist.add(os);
}else if(value == max){
maxlist.add(os);
}
}
int index = 0;
for(int i= 0;i<maxlist.size();i++){
if(maxlist.get(i).equals(maxString)){
index =i;
break;
}
}

System.out.println("出现最多的字符分别为:");
for(int i=index;i<maxlist.size();i++){
System.out.println(maxlist.get(i)+" ");
}
System.out.println();

System.out.println("出现最多的次数为: "+max);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: