毎日1本のプログラミングの問題(2)------文字列の中で個数の最も多い文字列の個数を求めて、そして印刷します
1673 ワード
1つの文字列を指定し、同じ文字の個数を見つけて、最も多くの文字列を印刷します.1つの文字列にはa~zの複数の文字が含まれている可能性があり、例えばStringdata="aavzcadfsfsdhshgWasdfasdf"のように、出現回数が最も多いその文字と回数を求め、複数の重複があれば求められる.〔金山会社の面接問題
(最初はこの問題をするときは配列に保存して、実習会社に来て、ボスは、一般的にこのような文字列を求める問題はjavaの中で一般的にあなたの集合の知識を試験して、それからネット上の解答を見ると、やはりすべてこのようにして、しかも時間の複雑さは小さい)自分の書いたプログラムを伝えて、誰かがもっと良い方法があることを望んでいます
(最初はこの問題をするときは配列に保存して、実習会社に来て、ボスは、一般的にこのような文字列を求める問題はjavaの中で一般的にあなたの集合の知識を試験して、それからネット上の解答を見ると、やはりすべてこのようにして、しかも時間の複雑さは小さい)自分の書いたプログラムを伝えて、誰かがもっと良い方法があることを望んでいます
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
public class FindRepeat {
public static void doString(String str){
char[] array=str.toCharArray();
ArrayList list=new ArrayList();
TreeSet set=new TreeSet();
for(int i=0;imax)&&(value>1)){
max=value;
}
}
Set set2=hm.entrySet();
Iterator iterator=set2.iterator();
while(iterator.hasNext()){
Map.Entry mapentry=(Map.Entry)iterator.next();
if(mapentry.getValue().equals(max)){
System.out.println(" :"+mapentry.getKey());
System.out.println(" :"+max);
}
}
}
public static void main(String[] args){
String strInput = new String("aavzcadfdsfsdhshgWasdfasdf");
doString(strInput);
}
}