JavaHackerEarth问题.虽然我以不同的方式得到了解决方案,但我想知道这段代码有什么问题.请帮助.indexo



有一个输入字符串集合和一个查询字符串集合。对于每个查询字符串,确定它在输入字符串列表中出现的次数。返回结果的数组。

public static List<Integer> matchingStrings(List<String> strings, List<String> queries) {
List<Integer> s = new ArrayList<Integer>(queries.size());
for(int i = 0;i<queries.size();i++){
s.set(i,0);
}
for(int i = 0;i < queries.size();i++){
for(int j = 0; j<strings.size();j++){
if((strings.get(j)).equals(queries.get(i))){
s.set(i,(s.get(i)+1));
}
}
}
return s;
}

//线程"main"indexoutofboundsexception:索引0超出长度0的边界在java.base/jdk.internal.util.Preconditions.outOfBounds (Preconditions.java: 64)在java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex (Preconditions.java: 70)在java.base/jdk.internal.util.Preconditions.checkIndex (Preconditions.java: 248)在java.base/java.util.Objects.checkIndex (Objects.java: 359)在java.base/java.util.ArrayList.set (ArrayList.java: 441)在Result.matchingStrings (Solution.java: 27)Solution.main (Solution.java: 68)

让我们看一个例子:

List<String> arr = new ArrayList<String>();
System.out.println(arr.get(0));

给出Index 0 out of bounds for length 0.

这意味着你的数组列表是空的&您正在尝试访问它的元素。

同样发生在你的情况下,检查你的数组列表是否有空&你试图在第二个for循环中使用get访问元素。

相关内容

  • 没有找到相关文章

最新更新