【发布时间】:2021-05-29 10:18:28
【问题描述】:
我得到了正确的输出,但超出了时间限制。
问题: 包含(不一定不同)N 个单词和 Q 个查询的列表 Li。每个查询都包含一个字符串 x。对于每个查询,找出 List Li 中有多少个字符串以字符串 x 为前缀。\
class Solution{
static List<Integer> prefixCount(int N, int Q, String li[], String query[])
{
List<Integer> list = new ArrayList<>();
int l,c;
for(int i=0; i<Q; i++){
c = 0;
for(int j=0; j<N; j++){
if(li[j].length()>=query[i].length()){
if(li[j].substring(0,query[i].length()).equals(query[i])){
c++;
}
}
}
list.add(c);
}
return list;
}
}
如何优化上述代码?
【问题讨论】:
-
您需要使用 Trie 并在每个节点上维护一个计数,以了解您在创建 Trie 时遍历该节点的次数。在此遍历 Trie 以获取前缀之后,节点处的计数就是您的答案
标签: java arrays string methods