2011年8月20日土曜日

TopCoder SRM226 Div2 250Pts

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

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計