2013年1月24日木曜日

TopCoder SRM456 Div2 250Pts

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

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計