【发布时间】:2018-10-23 15:27:39
【问题描述】:
如何降低以下代码的时间复杂度?
我必须检查查询中的单词是否存在于句子中并打印句子编号,否则打印“-1”。
查询中单词的顺序无关紧要。它们应该出现在句子中,就是这样。
类结果{
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+" ");
}
}
【问题讨论】:
-
一个句子必须包含所有查询的所有单词?
-
一个句子必须包含一个查询的所有单词。例如。输入:- 句子:吉姆喜欢玛丽,凯特喜欢汤姆,汤姆不喜欢吉姆;查询:吉姆汤姆,喜欢;输出:2, 0 1
-
好的,检查我更新的答案。
标签: java time complexity-theory