C++POJ2503BabelFish
问题描述:
你刚从滑铁卢搬到大城市。这里的人们讲一种难以理解的外语方言。幸运的是,你有一本字典来帮助你理解它们。
输入:
输入包括多达 100,000 个字典条目,然后是空白行,然后是多达 100,000 个单词的消息。每个字典条目都是一行包含一个英语单词,然后是一个空间和一个外语单词。字典中每个外来词只出现一次。信息是外语中的一系列单词,每行一个单词。输入中的每个单词最多是 10 个小写字母的序列。
输出:
输出是翻译成英文的消息,每行一个单词。字典中未写的外来词应翻译为"eh"。
示例输入
dog ogday
cat atcay
pig igpay
froot ootfray
loops oopslay
atcay
ittenkay
oopslay
样本输出
cat
eh
loops
提示
建议使用大量输入和输出、扫描和打印。
解决方案:
#include<iostream>
#include<string>
#include<stdio.h>
using namespace std;
int main()
{
map<string, string>babelfish;
string s1, s2;
char s[22];
while (gets_s(s) != NULL&&s[0] != '\0')
{
/*
gets_s()函数:从键盘上输入字符,直至接受到换行符或EOF时停止,
并将读取的结果存放在buffer指针所指向的字符数组中。
*/
int i;
for (i = 0; i < strlen(s); i++)
if (s[i] == ' ')break;
s1 = string(&s[0], &s[strlen(s)]).substr(0, i);
s2= string(&s[0], &s[strlen(s)]).substr(i+1);
babelfish[s2] = s1;
}
while (gets_s(s) != NULL&&s[0] != '\0')
{
if (babelfish.find(s) != babelfish.end())
cout << babelfish[s] << endl;
else cout << "eh" << endl;
}
system("pause");//为了观察结果用该语句,POJ提交时去除该语句
return 0;
}