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