2011年8月16日火曜日

TopCoder SRM224 Div2 250Pts

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

プリンタがウィルスに感染して、訳のわからないことになってしまった。あなたは、しばらく印刷しているうちにあることに気が付いた。ひっくり返っているのである。ページの各行の左半分は真ん中から左の余白へ、右半分は右の余白から真ん中に文章が続いているのである。例えば、"abcd"という印刷は本来は"badc"になっているということである。あなたへの問題は1行のlineが与えられたときに、これを解読して本来の順序に戻すということである。なお、文字の数は常に偶数であると仮定してよいものとする。

私の解答は以下の通り。

public class InsideOut {
 public String unscramble(String line) {
  StringBuffer s1 = new StringBuffer(line.substring(0, line.length()/2));
  StringBuffer s2 = new StringBuffer(line.substring(line.length()/2));
  return s1.reverse().toString() + s2.reverse().toString();
 }
}

得点は244.95。StringBuilderというクラスを利用している回答があったので、調べてみようかと思う。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計