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