Как уменьшить сложность времени для следующего кода?
Я должен проверить, присутствуют ли слова в запросах в предложениях, и напечатать номер предложения, иначе вывести «-1».
Порядок слов не имеет значения в запросах.Они должны присутствовать в предложении, вот и все.
class Result {
static boolean o=false;
public static void textQueries(List<String> sentences, List<String> queries) {
// Write your code here
String[] s, se;
ArrayList<HashSet<Integer>> arr=new ArrayList<>();
for(int i=0; i<queries.size(); i++) {
s=queries.get(i).split(" ");
HashSet<String> set=new HashSet<>(Arrays.asList(s));
for(String str : set) {
HashSet<Integer> q=new HashSet<>();
for(int j=0; j<sentences.size(); j++) {
se=sentences.get(j).split(" ");
HashSet<String> sen=new HashSet<>(Arrays.asList(se));
if(sen.contains(str)) {
q.add(j);
}
}
arr.add(q);
}
for(int d=0; d<sentences.size(); d++) {
print(d, arr);
}
if(o==false)
System.out.print("-1");
System.out.println();
arr.clear();
o=false;
}
}
public static void print(int d, ArrayList<HashSet<Integer>> arr) {
for(int a=0; a<arr.size(); a++) {
HashSet<Integer> st=arr.get(a);
if(!st.contains(d))
return;
}
o=true;
System.out.print(d+" ");
}
}