2012年2月10日金曜日

TopCoder SRM329 Div2 250Pts

このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。

text[]という各要素が1単語からなる文字列型の配列が与えられる。母音(a,i,u,e,o)をすべてtextから取り除き少なくとも一つは母音でない文字が残るように暗号化する。もし、単語が母音のみからなる場合は、そのままにしておく。i番目の要素がtext[i]を暗号化した結果になる文字列型の配列を返すようなメソッドを作成せよ。

なおtext[]を構成する文字は小文字のアルファベットのみからなるものとする。

私の解答はこちら。

public class VowelEncryptor {

 public String[] encrypt(String[] text) {
  for( int i=0 ; i<text.length ; i++ ){
   StringBuffer sb = new StringBuffer();
   boolean isAllVowels = true;
   for( int j=0 ; j<text[i].length() ; j++ ){
    char c = text[i].charAt(j);
    if( c != 'a' && c != 'i' && c != 'u' && c != 'e' && c != 'o' ){
     isAllVowels = false; // text[i]はすべて母音ではなかった
     sb.append(c);
    }
   }
   // すべて母音でなければ、得られた子音のみの文字列をtext[i]に代入
   // 逆にすべて母音なら処理はしない
   if( isAllVowels == false ){
    text[i] = sb.toString();
   }
  }
  return text;
 }

}

得点は239.98/250、中央値は約215点。

0 件のコメント:

コメントを投稿

フォロワー

ページビューの合計