J'ai une chaîne et un tableau de mots et je dois écrire du code pour trouver toutes les sous-chaînes de la chaîne qui contiennent tous les mots du tableau dans n'importe quel ordre. La chaîne ne contient aucun caractère/chiffre spécial et chaque mot est séparé par un espace.Recherche de sous-chaînes de chaînes contenant tous les mots du tableau
Par exemple:
Chaîne suivant:
aaaa aaaa aaaa aaaa cccc bbbb bbbb bbbb bbbb aaaa bbbb cccc
mots en réseau:
aaaa
bbbb
cccc
exemples de sortie:
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
J'ai implémenté ceci en utilisant des boucles, mais c'est très inefficace.
Comment puis-je le faire plus efficacement?
Mon 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;
}
ce serait mieux si vous pouvez donner un exemple –
Pourquoi ne pas montrer ce que vous avez déjà? – assylias
Quelles sont les limites? Nombre de caractères dans la chaîne, nombre de mots? – nhahtdh