#include<iostream>
#include<cstdio>
#include<cstring>
const int maxn=1000000+10;
using namespace std;
struct node{
int count,next[30];
string word;
}a[maxn];
int e,flag;
string sx;
void insert(string hx,string yy){
int len=hx.size(),p=0;
for(int i=0;i<len;i++){
if(!a[p].next[hx[i]-'a'])a[p].next[hx[i]-'a']=++e;
p=a[p].next[hx[i]-'a'];
}
a[p].count=1;
a[p].word=yy;
}
void find(string s){
int len=s.size(),p=0;
for(int i=0;i<len;i++){
if(!a[p].next[s[i]-'a']){flag=1;return;}
p=a[p].next[s[i]-'a'];
}
if(a[p].count==1){
int i;
sx=a[p].word;
}else flag=1;
}
int main(){
int i,j,k,m,n;
string s1,s2;
cin>>s1;
while(1){
cin>>s1;
if(s1=="END")break;
cin>>s2;
insert(s2,s1);
}
cin>>s1;
char c=getchar(),t[15];
c=getchar();
while(c!='E'){
k=0;
while(c>='a' && c<='z'){
t[k++]=c;
c=getchar();
}
t[k]='\0';
flag=0;
string str(t);
find(t);
if(!flag)cout<<sx;
else cout<<t;
cout<<c;
c=getchar();
}
return 0;
}
HDU1075静态数组实现字典树
最新推荐文章于 2021-08-17 19:46:18 发布