La complessità dipenderà dalla regex che si usa per eseguire la divisione. (Sì, l'argomento che fornisci a String.split (...) è un'espressione regolare!)
Per il tuo esempio, sarà O(N)
dove N
è il numero di caratteri nella stringa di input.
L'algoritmo di divisione è abbastanza semplice, basato su un'implementazione di espressioni regolari esistente. Una descrizione di alto livello è:
- Compilare la regex e creare un matcher
- Iterate sulla stringa:
- Utilizza
Matcher.find(...)
per trovare il prossimo limite di parole
- Usa String.substring per estrarre la parola
- Aggiungi parola a un elenco di stringhe
- Converti l'elenco di stringhe in un array di stringhe.
La ricerca delle interruzioni tra "parole" sarà O(N)
o più complesse, a seconda della regex (la chiamata find
). La costruzione dell'elenco, matrice dei risultati e sottostringhe sarà O(N)
nel caso peggiore.
I dettagli precisi sono nel codice sorgente, che puoi trovare usando Google. (Cerca "java.lang.String" source
, sceglierne uno e poi esegui il drill down sulla versione di Java che ti interessa. Oppure cerca i file nel file ZIP del codice sorgente incluso nell'installazione di JDK)