hiho1014Trie树

#include <bits/stdc++.h>

using namespace std;

struct Node
{
    int num;
    Node* next[26];
}node;

void insert(string s)
{
    int slen = s.length();
    Node* t = &node;
    for(int i = 0; i<slen;i++)
    {
        int id = s[i] -'a';
        if(t->next[id] == NULL) t->next[id] = new Node;
        t = t->next[id];
        t->num++;
    }
}

int find(string s)
{
    int slen = s.length();
    Node* t = &node;
    for(int i = 0; i<slen;i++)
    {
        int id = s[i] -'a';
        t = t->next[id];
        if(t == NULL)return 0;
    }
    return t->num;
}
int main()
{
    int n;
    cin>>n;
    for(int i = 0; i<n; i++)
    {
        string s;
        cin>>s;
        insert(s);
    }
    int num;
    cin>>num;
    for(int i = 0;i<num;i++)
    {
        string s;
        cin>>s;
        int tmp = find(s);
        cout<<tmp<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/amous_x/article/details/80073329