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