Encontrando Sub-Strings de String Contendo todas as palavras em array
Eu tenho uma String e uma matriz de palavras e eu tenho que escrever código para encontrar todas as substrings da string que contêm todas as palavras na matriz em qualquer ordem. A string não contém caracteres / dígitos especiais e cada palavra é separada por um espaço.
Por exemplo:
String dada:
aaaa aaaa aaaa aaaa cccc bbbb bbbb bbbb bbbb aaaa bbbb cccc
Palavras na matriz:
aaaa
bbbb
cccc
Amostra de saída:
aaaa aaaa aaaa aaaa cccc bbbb bbbb bbbb bbbb
aaaa aaaa aaaa aaaa cccc bbbb
aaaa cccc bbbb bbbb bbbb bbbb
cccc bbbb bbbb bbbb bbbb aaaa
aaaa cccc bbbb
Eu implementei isso usando loops for, mas isso é muito ineficiente.
Como posso fazer isso de maneira mais eficiente?
Meu código:
for(int i=0;i<str_arr.length;i++)
{
if( (str_arr.length - i) >= words.length)
{
String res = check(i);
if(!res.equals(""))
{
System.out.println(res);
System.out.println("");
}
reset_all();
}
else
{
break;
}
}
public static String check(int i)
{
String res = "";
num_words = 0;
for(int j=i;j<str_arr.length;j++)
{
if(has_word(str_arr[j]))
{
t.put(str_arr[j].toLowerCase(), 1);
h.put(str_arr[j].toLowerCase(), 1);
res = res + str_arr[j]; //+ " ";
if(all_complete())
{
return res;
}
res = res + " ";
}
else
{
res = res + str_arr[j] + " ";
}
}
res = "";
return res;
}