このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。それでは、問題について説明する。
acronymというのは、長い名前を表す文字列である。各単語の先頭を取り出し、大文字にすることによってacronymは作られる。ただし、例外があって、and、the、ofについてはacronymを作るときには無視をすることになっている。この問題では単語とは空白を含まない連続した文字と定義する。longNameという文字列(文章)が与えられたときに、acronymを生成してその文字列を返すメソッドを作成せよ。
私の解答は以下の通り。
public class VLNString {
public String makeAcronym(String longName) {
String[] sp = longName.trim().split(" ");
StringBuffer sb = new StringBuffer();
for( int i=0 ; i<sp.length ; i++ ){
// 単語と単語の間の空白は常に1字とは限らないのがミソ
if( sp[i].equals("and") || sp[i].equals("the") ||
sp[i].equals("of") || sp[i].equals("") ){
continue;
}else{
sb.append(sp[i].substring(0,1).toUpperCase());
}
}
return sb.toString();
}
}得点は223.77/250、中央値は約220点。スペースで切った後にできることがある""の処理は処理しないということに気付くのに時間がかかった。

0 件のコメント:
コメントを投稿