このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。それでは、問題について説明する。
ネットやメールにおいて、署名をカスタムして面白いものにしようとすることがある。あなたは掲示板の管理者で、特定のルールに従ったときに名前に飾りをつけるようにしようとしている。nameは名前、commands[]はnameの前後のどちらを飾るかを指定するもので、decorations[]は飾る文字列である。commandは3種類ある。commnads[i]がprependなら前にdecorations[i]をつけ、appendなら後ろにdecorations[i]をつけ、surroundならdecorations[i]を前につけ、後ろにはdecoratios[i]を反転させたものを付けることになる。nameに対し、command[]、decorations[]を順番に施した結果得られる文字列を返すメソッドを作成せよ。
私の解答は以下の通り。
public class SignatureDecorator {
public String applyDecoration(String name, String[] commands, String[] decorations) {
String str = new String(name);
for( int i=0 ; i<commands.length ; i++ ){
if( commands[i].equals("prepend") ){
str = decorations[i] + str;
}else if( commands[i].equals("append") ){
str = str + decorations[i];
}else if( commands[i].equals("surround") ){
String rev = new StringBuffer(decorations[i]).reverse().toString();
str = decorations[i] + str + rev;
}
}
return str;
}
}得点は216.56/250、中央値は約192点。
0 件のコメント:
コメントを投稿