For this for loop, is the run time O(n) or O(n^2):
char[] ar = new char[1000];
String s = "";
Arrays.fill(ar, 'a');
for(Character c: ar){
s += c;
}
So basically, what is the run time of + on a String? How does it work behind the scene in Java?
Java strings are immutable. Every time you do:
s+=c;
You’re really saying:
s = new String(s + c);
new String(s + c) must allocate a string of length s + 1, or:
1
2
3
4
5
6
7
8
9
…
etc.
Since Sum(1..N) == (n + 1) (n / 2), this is O(n^2).
One of the cases where StringBuilder is a definite advantage.