#include<bits/stdc++.h>
using namespace std;
struct node{
int son[26];
string t;
}p;
vector<node>f;
int l;
void init(int i,int j,string s,string s1){
if(j==s.size()){
f[i].t=s1;
return;
}
int c=s[j]-'a';
if(f[i].son[c])init(f[i].son[c],j+1,s,s1);
else{
f.push_back(p);
l++;
f[i].son[c]=l;
init(f[i].son[c],j+1,s,s1);
}
}
string query(int i,int j,string s){
if(j==s.size()){
if(f[i].t.size()!=0)return f[i].t;
return "Did not find it";
}
int c=s[j]-'a';
if(!f[i].son[c])return "Did not find it";
return query(f[i].son[c],j+1,s);
}
int main(){
string s,s1,s2;
int i,j,ok,last;
f.push_back(p);
getline(cin,s);
while(1){
cin>>s;
if(s=="END")break;
cin>>s1;
scanf("\n");
init(0,0,s1,s);
}
scanf("\n");
getline(cin,s);
while(1){
getline(cin,s);
if(s=="END")break;
last=0;
ok=0;
s+=' ';
for(i=0;i<s.size();i++)
if(s[i]<'a'||s[i]>'z'){
if(ok){
s1="";
for(j=last;j<i;j++)
s1+=s[j];
s2=query(0,0,s1);
if(s2=="Did not find it")cout<<s1;
else cout<<s2;
}
if(i!=s.size()-1)printf("%c",s[i]);
last=i;
ok=0;
}
else{
if(ok==0)last=i;
ok=1;
}
printf("\n");
}
return 0;
}
HDU 1075 What Are You Talking About
最新推荐文章于 2021-03-10 17:37:40 发布