对于 Java来说,由于字符串是不可变的,因此在连接时首先为新字符串分配足够的空间,复制旧字符串中的内容并附加到新字符串。
因此,总时间复杂度将是:
$5+5×2+5×3+…+5×n=5×(1+2+3+…+n)=5×n×(n+1)/2 即O(N^2)。$
针对 Java 中出现的此问题,我们提供了以下解决方案:
如果你确实希望你的字符串是可变的,则可以使用 toCharArray 将其转换为字符数组。
如果你经常必须连接字符串,最好使用一些其他的数据结构,如 StringBuilder 。
1 | 作者:力扣 (LeetCode) |