Java 检查数组中的前缀

Java 检查数组中的前缀,java,arrays,string,methods,Java,Arrays,String,Methods,我得到了正确的输出,但超出了时间限制。 问题:包含N个单词(不一定不同)和Q查询的列表。每个查询由一个字符串x组成。对于每个查询,查找列表中以字符串x为前缀的字符串数\ class Solution{ static List<Integer> prefixCount(int N, int Q, String li[], String query[]) { List<Integer> list = new ArrayList<>(

我得到了正确的输出,但超出了时间限制。

问题:包含N个单词(不一定不同)和Q查询的列表。每个查询由一个字符串x组成。对于每个查询,查找列表中以字符串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;
    }
}
类解决方案{
静态列表前缀计数(int N,int Q,字符串li[],字符串查询[])
{
列表=新的ArrayList();
int l,c;

对于(int i=0;i使用给定字符串创建一个Trie,在创建Trie时,在每个节点上保持一个节点被传输的次数计数


现在,对于通过数组遍历的每个前缀字符串,如果成功遍历到Trie中的前缀字符串长度,则该前缀字符串的答案为节点处的计数,否则答案为0。

在创建Trie时,需要使用Trie并在每个节点处保持遍历节点次数的计数。此后遍历前缀的Trie,节点处的计数就是您的答案