2012-12-27 1 views
2

Java에서 String.toCharArray()의 런타임은 무엇입니까? 소스 코드는String.toCharArray()의 런타임은 무엇입니까?

public char[] toCharArray() { 
    // Cannot use Arrays.copyOf because of class initialization order issues 
    char result[] = new char[value.length]; 
    System.arraycopy(value, 0, result, 0, value.length); 
    return result; 
} 

System.arrayCopy입니까? O (n)의 실행 시간이 있습니까? 소스 코드는 구현 방법에 대해서는별로 언급하지 않습니다. 모든 요소를 ​​거쳐 복사합니까? 감사.

+0

런타임은 ** O (n) **입니다. 더 좋을 수는 없습니다 (문자를 복사해야 함). 질문은 그 요인입니다. – MrSmith42

+4

답변보기 : http://stackoverflow.com/a/11208577/485971 – irrelephant

+0

@irrelephant 그래서 ** O (1) **일까요? 루프를 반복하지 않고 메모리 블록을 복사하기 때문에? –

답변

1

System.arraycopy()은 일반적으로 내장되어 있으며 매우 빠릅니다. 즉, 배열의 모든 요소를보고 (복사해야하기 때문에) 배열의 길이가 점근 적으로 복잡해 지는데, 즉 O(n)입니다.

따라서 toCharArray()의 복잡도는 O(n)입니다. 여기서 n은 문자열의 길이입니다.

관련 문제