2016-10-21 6 views
0

文字列を複製できるプリミティブが必要です。文字列と複製数を入力として受け取り、出力を生成します。重複の数には0が含まれます。つまり、空の文字列が生成されます。私は以下の方法の他に、もっと短い方法を考えることはできません。下のものは "。"を使います。ストリングの例として。Javaで複数の文字列に0を掛け算する方法

String res = ""; 
for(int i = 0; i < dup; i++) { 
    res = res + "."; 
} 
return res; 

誰でも解決策がありますか?

+3

使用' StringBuilder'は、[JavaでのtoString(中文字列連結対のStringBuilder)]の 'STRING' – Saravana

+0

可能な重複(に変換http://stackoverflow.com/questions/1532461/stringbuilder-vs-string-concatenation-in-java) – Rogue

+0

「[1つの繰り返し文字を持つJava文字列を特定の長さに初期化できるかどうか]」(http://stackoverflow.com)/questions/1900477/can-one-initialise-a-java-string-a-single-repeated-character-to-a-specific) – sprinter

答えて

4

あなたは単一の文字を繰り返している場合、単にアレイを作成し、Stringオブジェクトを返すように速いかもしれないが、StringBuilderのは別にこの

private static String multiply(String str, int times) { 
    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < times; i++) { 
     sb.append(str).append("."); 
    } 
    return sb.toString(); 
} 
+0

これはなぜより良いですか?より多くのコードのように見える – drdot

+2

@elixir 'String'はJavaでは不変です。値を変更することはできません。新しい' String'が作成されるたびに 'StringBuilder'は変更可能です。値を変更することができます – Saravana

+0

@elixir理由はこのリンクを参照してくださいhttp://stackoverflow.com/questions/1532461/stringbuilder-vs-string-concatenation-in-tostring-in-java Rogue投稿者 – kjsebastian

0

を試してみてください。場合

char repeat = /* some char */; 
int amount = /* amount to repeat */; 
char[] val = new char[amount]; 
IntStream.range(0, val.length).forEach(i -> val[i] = repeat); 
return new String(val, 0, val.length); 

けれどもをI正しいことを覚えておいてください。StringBuilderを使用すると、その最適化を自分自身で保存したい場合には、基礎となる配列を初期化できます。

0

これを試してください。代わりに、連結のために、一度完了STRING` `の

static String multiply(String s, int dup) { 
    return new String(new char[dup]).replaceAll("\0", s); 
} 
関連する問題