java - 字符串反向操作最佳时间复杂度: Is it O(n) or O(n/2)?

标签 java algorithm

下面是字符串反转的代码片段

private static String reverseString(String originalString){
char arr[]= originalString.toCharArray();
char temp;

for(int i= 0,j=arr.length-1;i<(arr.length/2);i++,j--){

 temp=arr[i];
 arr[i]=arr[j];
 arr[j]=temp;
}
return new String(arr);

我看到很多关于上述字符串反转的时间复杂度的讨论,其中一些提到复杂度为 O(n/2) 和一些 O(n)。

我想了解哪个实际上是字符串反转的正确时间复杂度。

任何见解都将真正有助于缓解这里的困惑。

最佳答案

O(n)O(n/2) 之间没有什么区别。两者之间的差异是恒定的。

如果您想计算上述代码片段中操作的确切数量,则更准确地说是 3n/2,因为循环的每次迭代都包含 3 个操作。当然,您还必须将输入字符串转换为字符数组,反之亦然,这两者都需要线性时间。

关于java - 字符串反向操作最佳时间复杂度: Is it O(n) or O(n/2)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31109959/

相关文章:

java - 将图像和背景添加到 NatTable 行

c++ - C++中的分而治之算法

c# - 找到所有圆圈大小的快速方法是什么?

java - 无法序列化 Jackson xml 中的 OffsetDateTime

多边形内/多边形上的 JavaFX 文本

比较英语句子相似度的算法

algorithm - 此几何(木工相关)程序的最佳算法

javascript - 如何强制 node.js 进行更深层次的递归?

java - Android Studio 1.4 渲染问题 NOTE : This project contains Java compilation errors

java - 使用 Vaadin 和 Hibernate 创建表/网格