gpt4 book ai didi

java - 在Java中,对于字符串x,s.length()的运行时成本是多少?是 O(1) 还是 O(n)?

转载 作者:太空宇宙 更新时间:2023-11-04 11:59:46 25 4
gpt4 key购买 nike

我被告知代码如下:

for (int i = 0; i < x.length(); i++) {
// blah
}

实际上是 O(n^2),因为重复调用了 x.length()。相反,我应该使用:

int l = x.length();
for (int i = 0; i < l; i++) {
// blah
}

这是真的吗?字符串长度是否存储为 String 类的私有(private)整数属性?或者 String.length() 真的遍历整个字符串只是为了确定它的长度吗?

最佳答案

不,java字符串的长度是O(1),因为java的string类将长度存储为字段。

您收到的建议适用于 C 以及其他语言,但不适用于 java。 C 的 strlen 遍历 char 数组寻找字符串结尾字符。 Joel 在播客上谈论过它,但是是在 C 的背景下。

关于java - 在Java中,对于字符串x,s.length()的运行时成本是多少?是 O(1) 还是 O(n)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41027603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com