1.这是一道字典树的题,但用map也可以做
2.代码:
#include<cstdio> #include<cstring> #include<iostream> #include<map> using namespace std; map<string,string> mp; char s[30100],ss[15]; int main() { scanf("%s",s); while(1) { scanf("%s",s); if(strcmp(s,"END")==0) break; scanf("%s",ss); string s1,s2; int len1=strlen(s); int len2=strlen(ss); for(int i=0; i<len1; i++) { s1+=s[i]; } for(int i=0; i<len2; i++) { s2+=ss[i]; } mp.insert(make_pair(s2,s1)); } map<string,string>::iterator it; /*for(it=mp.begin();it!=mp.end();it++) { cout<<(it->first)<<" "<<(it->second)<<endl; }*/ scanf("%s",s); getchar(); while(1) { gets(s); //getchar(); if(strcmp(s,"END")==0) { break; } int len=strlen(s); //s[len]=' '; string sss; for(int i=0; i<=len; i++) { if(s[i]>=97&&s[i]<=122) { sss+=s[i]; } else { if(sss.size()==0) { if(i!=len) cout<<s[i]; continue; } else { it=mp.find(sss); if(it!=mp.end()) { cout<<it->second; } else { cout<<sss; } if(i!=len) cout<<s[i]; sss.clear(); } } } cout<<endl; } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-19 22:03:43