2011年10月21日金曜日

TopCoder SRM257 Div2 250Pts

このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。それでは、問題について説明する。

codeの文字列を先頭から順番に調べ、keyにマッチしたものがあれば、それが何番目になるかということを調べ、エンコーディングした結果を返す。例えばkey="ABCDEFGHJK"(10文字で固定)、code="XJK"であれば、90になる。Xは存在せず、Jは9番目の文字で、Kは10番目の文字(10番目の文字は0と扱う)だからである。また、少なくともcodeの1文字はkeyの中に存在しているものとする。

私の解答はこちら。

public class SubstitutionCode {
 public int getValue(String key, String code) {
  int num = 0;
  for( int i=0 ; i<code.length() ; i++ ){
   // indexOfは引数の文字がkeyに存在すれば0以上の値になる。
   // 存在しない場合は-1になる
   int v = key.indexOf(code.charAt(i));
   if( v >= 0 ){
    num = num * 10 + (v+1) % 10;
   }
  }
  return num;
 }
}

得点は242.99/250。英語の説明が難しいので、大分意訳して説明しています。詳細は英語の問題文をご覧ください。

0 件のコメント:

コメントを投稿

フォロワー

ページビューの合計