Q.English Sentence
英語の文章に出現する単語の中で、出現頻度が最も高い単語と、文字数が最も多い単語を出力して終了するプログラムを作成してください。入力データには英文字、スペースのみが含まれているものとします。単語とは、スペースで区切られた連続する英文字の列です。文章の文字数は 1000 文字以下です。一つの単語の文字数は 32 文字以下です。出現頻度が最も高い単語、最長の文字数を持つ単語はそれぞれ文中にただ一つだけ存在するものとします。
Input
英語の文章を表現する文字列(半角の英文字、スペース)
Output
最も出現頻度が高い単語と、最も文字数が多い単語を1つのスペースで区切って1行に出力して下さい。
Sample Input
Thank you for your mail and your lectures
Output for the Sample Input
your lectures
Ans.
import java.io.*;
class EnglishSentence{
public static void main(String[] args){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
while( 0 < (str = br.readLine()).length()){
System.out.println(getFreqStr_MaxLenStr(str));
}
}catch(IOException e){
System.out.println(e);
}
}
public static String getFreqStr_MaxLenStr(String str){
String errMsg = "Error!!\nThe sentence is not format String!!!\n format: ";
if(str.length() <= 1000){
String[] words = str.split(" ");
int index_maxLenStr = 0;
int[] index_freqStr = new int[words.length];
int index_maxFreqStr = 0;
for(int i=0; i < words.length; i++){
if(32 < words[i].length() || ! words[i].matches("[a-zA-Z]+$")){
return errMsg;
}else{
if(words[index_maxLenStr].length() < words[i].length() ){
index_maxLenStr = i;
}
for(int j=0; j < words.length; j++){
if(words[j].equals(words[i]) ){
index_freqStr[j]++;
}
}
}
}
for(int index=0; index
index_maxFreqStr = index;
}
}
return words[index_maxFreqStr] +" " + words[index_maxLenStr];
}
return errMsg;
}
}