Java String.toCharArray()、O(n)或O(1)的时间复杂度是多少
假设要将长度为n的字符串转换为长度为n的字符数组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),(简单的指针重新定位或如前所述)?这是线性时间;它进行复制,复制需要线性时间。(常数因子可能很低,但总体上仍然是线性的。)
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的副本可能持续时间相同,并且可能以某个更大的常量值的增量增加。这意味着常数因子较低,而不是实际渐近性的变化。