gpt4 book ai didi

java - StringBuilder逆向方法的时间复杂度

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:33:54 24 4
gpt4 key购买 nike

我想找出 StringBuilder 反向方法的时间复杂度。反向方法的源代码如下:

 public AbstractStringBuilder reverse() {
boolean hasSurrogate = false;
int n = count - 1;
for (int j = (n-1) >> 1; j >= 0; --j) {
char temp = value[j];
char temp2 = value[n - j];
if (!hasSurrogate) {
hasSurrogate = (temp >= Character.MIN_SURROGATE && temp <= Character.MAX_SURROGATE)
|| (temp2 >= Character.MIN_SURROGATE && temp2 <= Character.MAX_SURROGATE);
}
value[j] = temp2;
value[n - j] = temp;
}
if (hasSurrogate) {
// Reverse back all valid surrogate pairs
for (int i = 0; i < count - 1; i++) {
char c2 = value[i];
if (Character.isLowSurrogate(c2)) {
char c1 = value[i + 1];
if (Character.isHighSurrogate(c1)) {
value[i++] = c1;
value[i] = c2;
}
}
}
}
return this;
}

这是文档的链接:documentation时间复杂度是多少?

有什么方法可以更有效地执行字符串的还原?

最佳答案

不可能在小于 O(n) 的时间内恢复字符串,并且您清楚地发布的算法是 O(n),因为它包含两个连续的 O(n) 循环。

关于java - StringBuilder逆向方法的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19814067/

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