今日の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メソッドの適用方法に手間取って、ややスコアは低めとなった。