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