У меня есть строка и массив слов, и я должен написать код, чтобы найти все подстроки строки, содержащие все слова в массиве в любом порядке. Строка не содержит специальных символов/цифр, и каждое слово разделяется пробелом.Поиск подстроки строки, содержащей все слова в массиве
Например:
Строка Дано:
aaaa aaaa aaaa aaaa cccc bbbb bbbb bbbb bbbb aaaa bbbb cccc
Слова в массиве:
aaaa
bbbb
cccc
Примеры выхода:
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
Я реализовал это с использованием циклов, но это очень неэффективно.
Как я могу сделать это более эффективно?
Мой код:
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;
}
Было бы лучше, если бы вы могли привести пример –
Почему бы вам не показать что вы искали? – assylias
Каковы пределы? Количество символов в строке, количество слов? – nhahtdh