Search code examples
javastringinsertappendstringbuilder

java: use StringBuilder to insert at the beginning


I could only do this with String, for example:

String str = "";
for (int i = 0; i < 100; i++) {
    str = i + str;
}

Is there a way to achieve this with StringBuilder? Thanks.


Solution

  • // DO NOT DO THIS. It is quadratic-time!
    StringBuilder sb = new StringBuilder();
    for(int i=0;i<100;i++){
        sb.insert(0, Integer.toString(i));
    }
    

    Warning: It defeats the purpose of StringBuilder, but it does what you asked.


    Better technique (although still not ideal):

    1. Reverse each string you want to insert.
    2. Append each string to a StringBuilder.
    3. Reverse the entire StringBuilder when you're done.

    This will turn an O(n²) solution into O(n).