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;
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage