蒜头君最近在上翻译专题课,教授丢给了他一本字典和一本蒜厂秘籍原稿。
字典包括蒜厂秘籍文字,和对应的英文解释。
蒜头君需要把蒜厂秘籍原稿翻译成英文稿,达成翻译家伟业。
输入格式
字典部分以START
开始,以END
结束。
中间部分每行两个单词,第一个是英文,第二个是蒜厂秘籍文字,以单个空格隔开。
接下来是历史书部分,同样以START
开始,以END
结束。
历史书包含若干行文本,如果其中的单词(由连续的英文字母组成)在字典上出现过,且是蒜厂秘籍文字,则把它替换成英文;否则,保留该单词,也保留所有非英文字母的特殊符号。文本长度不超过 1000010000。
输出格式
原稿翻译后的文本。
样例输入
START love abc you dddd END START i abc dddd! END
样例输出
i love you!
这道题复杂的地方在于:读取空白字符:空格、制表符等等,而且输出。
#include<bits/stdc++.h> using namespace std; int main() { map<string,string> a; string s; cin>>s; while(s!="END") { cin>>s; string val; cin>>val; a[val]=s; } getchar(); char b[10005]; while(gets(b)) { if(strcmp(b,"END")==0) break; string tmp; for(int i=0;i<strlen(b);i++) { if(('a'<=b[i]&&'z'>=b[i])||('A'<=b[i]&&b[i]<='Z')) { tmp+=b[i]; } else { if(a.count(tmp)) cout<<a[tmp]; else cout<<tmp; cout<<b[i]; tmp=""; } } if(tmp!="") { if(a.count(tmp)) cout<<a[tmp]; else cout<<tmp; } cout<<endl; } return 0; }