Suchen von Zeichenfolgen mit allen Wörtern im Array
Ich habe einen String und ein Array von Wörtern und muss Code schreiben, um alle Teilstrings des Strings zu finden, die alle Wörter im Array in beliebiger Reihenfolge enthalten. Die Zeichenfolge enthält keine Sonderzeichen / Ziffern und jedes Wort ist durch ein Leerzeichen getrennt.
Zum Beispiel:
String angegeben:
aaaa aaaa aaaa aaaa cccc bbbb bbbb bbbb bbbb aaaa bbbb cccc
Wörter im Array:
aaaa
bbbb
cccc
Ausgabebeispiel:
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
Ich habe dies mit for-Schleifen implementiert, aber das ist sehr ineffizient.
Wie kann ich das effizienter machen?
Mein Code:
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;
}