Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java String.toCharArray()、O(n)或O(1)的时间复杂度是多少_Java_String - Fatal编程技术网

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

Java String.toCharArray()、O(n)或O(1)的时间复杂度是多少,java,string,Java,String,假设要将长度为n的字符串转换为长度为n的字符数组 char [] chArray = someString.toCharArray(); 计算复杂度是多少?O(n)或O(1)(n:someString的长度) 我的印象是,它所做的只是分配大小为n*sizeof(char)的内存,并将该字符串复制到该位置。因此,复制n个内存单元需要O(n)个时间。是吗 或者它可以是O(1),(简单的指针重新定位或如前所述)?这是线性时间;它进行复制,复制需要线性时间。(常数因子可能很低,但总体上仍然是线性的。)

假设要将长度为n的字符串转换为长度为n的字符数组

char [] chArray = someString.toCharArray();
计算复杂度是多少?O(n)或O(1)(n:someString的长度)

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


或者它可以是O(1),(简单的指针重新定位或如前所述)?

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

答案是线性时间


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

您可以查看源代码……或者阅读javadoc。
System.arrayCopy()
适用于O(n)@JigarJoshi为什么不作为答案发布?尽管n=0到n=512的副本可能持续时间相同,并且可能以某个更大的常量值的增量增加。这意味着常数因子较低,而不是实际渐近性的变化。