2011年7月30日土曜日

TopCoder SRM210 Div2 250Pts

今日のTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。それでは、問題について説明する。

よくある文章の処理に、単語の先頭を大文字にするというものがある。titleという文章が与えられたときに、単語の先頭を大文字に変換して返すメソッドtoFirstUpperCaseを作成せよ。単語の区切りは1つ以上のスペースからなるものとする。また、入力の文字は空白の他はa-zという小文字のアルファベットのみかななるものとする。

私の解答は以下の通り。

public class TitleString {
 public String toFirstUpperCase(String title) {
  StringBuffer sb = new StringBuffer();
  boolean isspace = true;
  for( int i=0 ; i<title.length() ; i++ ){
   if( title.charAt(i) == ' ' ){ // i番目の文字は空白
   isspace = true; // 直前の文字が空白であることを示すフラグ
   sb.append(" ");
   }else if( title.charAt(i) != ' ' && isspace == true ){
    // i番目の文字が空白でなく、直前の文字が空白である場合
    isspace = false;
    sb.append(title.substring(i,i+1).toUpperCase());
   }else{
    // 直前は空白ではなく、i番目も空白でない文字の場合は、小文字はそのまま処理する
    sb.append(title.substring(i,i+1));
   }
  }
  return sb.toString();
 }
}

得点は219.34/250。中央値は約211点、正解率約90%。toUpperCaseメソッドの適用方法に手間取って、ややスコアは低めとなった。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計