【发布时间】:2021-02-04 01:47:48
【问题描述】:
我试图理解为什么字符串连接在 Java 中是 O(n) 时间复杂度。
我们被告知s1 + s2 将创建一个长度为s1.length() + s2.length() 的新字符串,并将s1 和s2 复制到该新字符串中。
因此(由他们)计算了以下成本2 + 2(n+1) + 1 => (5 + 2n)
我不确定我是否理解我的讲师是如何计算出来的。有人介意向我解释字符串连接的操作以证明上述成本是合理的吗?
【问题讨论】:
-
您认为
5+2n的复杂性是什么? -
@Naman 我知道
5 + 2n = O(n),但我不明白他们是如何到达5 + 2n的。字符串s1和s2是否被循环分配给一个新字符串? -
so if 两个字符串的长度都是
n,你会有n字符演练每个字符串,意思是2n,关于那些恒定的操作,也许找到他们的长度是其他人可能称为2的内容,然后对于3的其余部分类似的内容。显示代码可能是值得的。 -
实际的实现可能会使用低级操作一次复制多个字符,但原则上是的,它必须从两个字符串中复制每个字符。
-
谢谢你们,这很有帮助。
标签: java time-complexity