#include <iostream>
#include <string>
using namespace std;
//字典树节点定义
typedef struct Trie{
Trie* child[26];
int num;
Trie(){
for(auto &a:child) a=NULL;
num=1;
}
}Trie;
//字典树类的操作插入、查找
class DicTree{
public:
DicTree(){
p=new Trie();
}
void addWord(string s){
Trie *q=p;
for(int i=0;i<s.size();i++){
int a=s[i]-'a';
if(q->child[a]==NULL){
q->child[a]=new Trie();
}else{
q->child[a]->num++;
}
q=q->child[a];
}
}
int searchWord(string s){
Trie *q=p;
for(int i=0;i<s.size();i++){
int a=s[i]-'a';
if(q->child[a]==NULL)
return 0;
if(i==s.size()-1)
return q->child[a]->num;
q=q->child[a];
}
return 0;
}
private:
Trie *p;
};
int main(){
int n,m;
DicTree dictree;
cin>>n;
while(n--){
string tmp;
cin>>tmp;
dictree.addWord(tmp);
}
cin>>m;
while(m--){
string tmp;
cin>>tmp;
cout<<dictree.searchWord(tmp)<<endl;
}
return 0;
}
hihoCoder_1014
最新推荐文章于 2018-03-28 17:15:36 发布