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