从 Java 7 开始,String 子字符串方法已将其大 O 从 O(1) 更改为 O(n)。
StringBuilder subSequence 方法的时间复杂度是多少?
最佳答案
在java-11-openjdk
中,AbstractStringBuilder.subSequence
调用substring
...
public CharSequence subSequence(int start, int end) {
return substring(start, end);
}
...与String
的同名方法几乎相同...
public String substring(int start, int end) {
checkRangeSIOOBE(start, end, count);
if (isLatin1()) {
return StringLatin1.newString(value, start, end - start);
}
return StringUTF16.newString(value, start, end - start);
}
...调用 newString
它将(在两种情况下)复制后备数组,因此也是 O(n)。
public static String newString(byte[] val, int index, int len) {
return new String(Arrays.copyOfRange(val, index, index + len),
LATIN1);
}
关于java - Stringbuilder subSequence方法的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56132309/