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