このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文についておおまかに説明する。
アップルワードというのは、A、P、L、Eの文字のみからなり、ちょうどその順になっている単語をいう。Aは1つ、Pは2つ以上、LとEは1つである。大文字か小文字かは問題でない。例えば"apPpPPlE"はアップルワードであり、"ABCDE"はそうではない。wordというアップルワードに変えなければならない文字列型変数が与えられたとき、アップルワードに変換するのに最小限変換しなければならない文字数を返せ。もし変換できないのであれば、-1を返すようにせよ。
私の解答はこちら。
public class AppleWord {
public int minRep(String word) {
int len = word.length();
if( len < 5 ) return -1;
int nReplace = 0;
if( word.charAt(0) != 'A' && word.charAt(0) != 'a' ) nReplace++;
if( word.charAt(len-2) != 'L' && word.charAt(len-2) != 'l' ) nReplace++;
if( word.charAt(len-1) != 'E' && word.charAt(len-1) != 'e' ) nReplace++;
for( int i=1 ; i<len-2 ; i++ ){
if( word.charAt(i) != 'P' && word.charAt(i) != 'p' ) nReplace++;
}
return nReplace;
}
}
得点は222.52/250、1回のsubmitでシステムテストクリア。変換できない状況は、wordの長さが4以下のときとなる。
0 件のコメント:
コメントを投稿