2011年8月20日土曜日

TopCoder SRM233 Div2 250Pts

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

textという文字列配列が与えられたときに、それらをすべて右揃えにしたものを返せ。文字列配列の順序はそのままでよい。したがって、文字列の長さはすべて、text中の文字列の中で最長のものになる。また、左に埋められる文字はすべて空白(" ")になる。

私の解答はこちら。

public class JustifyText {
 public String[] format(String[] text) {
  int maxlen = -1;
  // 全体で最大になる文字列の長さを求める
  for( int i=0 ; i<text.length ; i++ ){
   maxlen = Math.max(maxlen,text[i].length());
  }
  String[] ret = new String[text.length];
  for( int i=0 ; i<text.length ; i++ ){
   StringBuffer tmp = new StringBuffer();
   // Rのrepみたいな関数はないのかな?ここで空白を生成
   for( int j=0 ; j<maxlen-text[i].length() ; j++ ){
    tmp.append(" ");
   }
   ret[i] = tmp.toString() + text[i];
  }
  return ret;
 }
}

得点は242.12/250、中央値は約215点。素直な実装になっていると思います。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計