この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 件のコメント:
コメントを投稿