计蒜客 蒜厂秘籍
来源:互联网 发布:淘宝怎么建战队 编辑:程序博客网 时间:2024/06/09 17:27
问题
蒜头君最近在上翻译专题课,教授丢给了他一本字典和一本蒜厂秘籍原稿。
字典包括蒜厂秘籍文字,和对应的英文解释。
蒜头君需要把蒜厂秘籍原稿翻译成英文稿,达成翻译家伟业。
输入格式
字典部分以START开始,以END结束。
中间部分每行两个单词,第一个是英文,第二个是蒜厂秘籍文字,以单个空格隔开。
接下来是历史书部分,同样以START开始,以END结束。
历史书包含若干行文本,如果其中的单词(由连续的英文字母组成)在字典上出现过,且是蒜厂秘籍文字,则把它替换成英文;否则,保留该单词,也保留所有非英文字母的特殊符号。文本长度不超过 10000。
输出格式
原稿翻译后的文本。
样例输入
START
love abc
you dddd
END
START
i abc dddd!
END
样例输出
i love you!
思路
这题可以用映射表来做,这题最坑爹的地方就是数据中存在有的空行,还有就是要考虑最后是以单词结尾的!提示一下单词是最长的连续字母串。比如 abcd!ef中ab不算单词。
实现代码(C++)
#include <iostream>#include <string>#include <map>#include <ctype.h>using namespace std;int main() { string start1; cin>>start1;//输入START string x,y; map<string, string> m; while (true) { cin>>x; if (x=="END") { break; } cin>>y; m[y]=x; } string start2; getline(cin,start2);//吸收\n string sentences=""; while (true) { string line; getline(cin,line); if (line=="START") { continue; } if (line=="END") { break; } string words=""; for (auto i=line.begin();i!=line.end();i++) { if (isalpha(*i)){//判断是否为字母,如果是放到words里 words+=*i; }else { if (words!="") { if(m.count(words)){//判断words是否在m的key有 sentences+=m[words]; }else {//如果没有,则将新的单词放到sentences里 sentences+=words; } } sentences+=*i;//句子加上非字母的 words.clear();//清空words } } if (words!="") {//处理最后以单词结尾的 if(m.count(words)){ sentences+=m[words]; }else { sentences+=words; } } sentences+='\n'; } cout<<sentences; }
0 0
- 计蒜客 蒜厂秘籍
- 蒜厂秘籍(map)
- windows秘籍
- Symbian 秘籍
- Google秘籍
- 就业秘籍
- 魔兽争霸秘籍
- xp秘籍
- 扫雷秘籍
- 【省钱秘籍】
- div 秘籍
- 失恋秘籍
- 省钱秘籍
- 突破秘籍
- 长寿秘籍
- J2EE秘籍
- JQuery秘籍
- 泡妞秘籍
- Java 什么是构造函数
- 初始技能树
- 诠释Android中序列化的原理与机制
- git工作流具体操作流程
- java高级图形界面编程-Swing中的对话框
- 计蒜客 蒜厂秘籍
- 自己实现Struts2(四)实现ActionInvocation
- 360春招3.25在线编程题解
- 经典案例详解salesforce中使用正则表达式的各种场景
- 设计模式——单例模式
- 数据库连接池的原理
- Web Hacking 101 中文版 十四、XML 外部实体注入(二)
- 欢迎使用CSDN-markdown编辑器
- 【步兵 lua】事件模型和事件解耦