Otimização de código

[quote=lele_vader]Muito interessante esse tópico.
Ajuda a pensar em soluções mais eficazes para um determinado problemas.
Seria uma idéia ter mais tópicos como esses.

[/quote]

concordo em gênero numero e grau.

por mim pode ter vários e sempre que possível irei participar

Essa sua solução foi muito boa realmente. Algoritmos com laços aninhados são ineficientes por causa da complexidade n log^n. Da maneira que fez deixou ele linear que é como toda solução deve ficar. Muito bem.

parabéns pelo nosso trabalho em equipe.

que venham outros desafios como esse, eu particularmente gostei muito da brincadeira

rsrsr

Pensei aqui em uma coisa que teoricamente daria mais uma melhorada, que é deixar os regex pré-compilados ao invés de criá-los a cada chamada de split() e replaceAll().

// Antes do loop maior, pode até cachear em um static final na classe porque não muda nunca.
Pattern splitPattern = Pattern.compile("\\s+");
Pattern removeSpecialCharsPattern = Pattern.compile("[,;.]");

// Substituir
frase.replaceAll("[,;.]", "").split("\\s+"))
// por
splitPattern.split(removeSpecialCharsPattern.matcher(frase).replaceAll("")))

Mas em um teste que fiz aqui não diminuiu muito :frowning:

Qualquer milissegundo com milhões de registros significaria uma melhoria significativa imagino eu.