String.toCharArray(),O(n)或O(1)的时间复杂度是多少

时间:2014-03-26 21:49:03

标签: java string

假设您要将长度为n的String转换为长度为n的字符数组。

char [] chArray = someString.toCharArray();

什么是计算复杂度?O(n)或O(1)(n:someString的长度)

我的印象是它所做的只是分配大小为n * sizeof(char)的内存,并将该字符串的副本复制到该位置。因此,复制n个内存单元需要O(n)时间。是吗 ?

或者它可能是O(1),(简单指针重定位或如上所述here)?

2 个答案:

答案 0 :(得分:7)

答案是线性时间。

将其视为复制单个字符并将其放入数组中。它取决于元素的数量,因此它是O(n)。

答案 1 :(得分:1)

这是线性时间;它复制,复制需要线性时间。 (常数因子可能很低,但总体上仍然是线性的。)