A complexidade dependerá do regex que você usa para fazer a divisão. (Sim, o argumento que você fornece para String.split (...) é um regex!)
Para o seu exemplo, será O(N)
onde N
está o número de caracteres na String de entrada.
O algoritmo de divisão é bastante simples, com base em uma implementação de regex existente. Uma descrição de alto nível é:
- Compile o regex e crie um correspondente
- Itere sobre a sequência:
- Use
Matcher.find(...)
para encontrar o próximo limite de palavras
- Use String.substring para extrair a palavra
- Adicionar palavra a uma lista de strings
- Converta a lista de strings em uma matriz de strings.
A busca pelas quebras entre "palavras" será O(N)
ou mais complexa, dependendo da regex (a find
chamada). A construção da lista, matriz de resultados e substrings será O(N)
no pior caso.
Os detalhes precisos estão no código-fonte, que você pode encontrar usando o Google. (Procure "java.lang.String" source
, escolha um e, em seguida, faça um drill down para a versão do Java em que você está interessado. Ou pesquise os arquivos no arquivo ZIP do código-fonte incluído na instalação do JDK)