标签:
Description
Input
Output
Sample Input
START from fiwo hello difh mars riwosf earth fnnvk like fiiwj END START difh, i‘m fiwo riwosf. i fiiwj fnnvk! END
Sample Output
hello, i‘m from mars. i like earth!
Hint
Huge input, scanf is recommended.
代码如下:
#include<stdio.h> #include<iostream> #include<string.h> using namespace std; struct node{ int count; char s[200]; struct node *a[27]; node(){ count=0; memset(a,0,sizeof(a)); } }; struct node *k,*d; char s[1001],s1[1001],s2[1001]; void insert(char c1[],char c2[]){ d=k; int w=strlen(c1); for(int i=0;i<w;i++){ if(d->a[c1[i]-'a']==NULL) d->a[c1[i]-'a']=new node; d=d->a[c1[i]-'a']; } d->count=1; strcpy(d->s,c2); } char *find(char c1[]){ d=k; int w=strlen(c1); for(int i=0;i<w;i++){ d=d->a[c1[i]-'a']; if(d==0)return NULL; } if(d->count==0)return NULL; return d->s; } int l; char z[2333]; int main(){ scanf("%s",&s); k=new node; while(1){ scanf("%s",&s1); if(strcmp(s1,"END")==0)break; scanf("%s",&s2); insert(s2,s1); } scanf("%s",&s); getchar(); while(1){ gets(s); if(strcmp(s,"END")==0)break; for(int i=0;i<strlen(s);i++){ l=0; while(s[i]>='a'&&s[i]<='z') z[l++]=s[i++]; z[l]='\0'; char *ans=find(z); if(ans==0)cout<<z; else cout<<ans; cout<<s[i]; } cout<<endl; } return 0; }
标签:
原文地址:http://blog.csdn.net/qq_34215568/article/details/51332398