詞典

描述
你旅遊到了一個國外的城市。那裏的人們說的外國語言你不能理解。不過幸運的是,你有一本詞典可以幫助你。

輸入
首先輸入一個詞典,詞典中包含不超過100000個詞條,每個詞條佔據一行。每一個詞條包括一個英文單詞和一個外語單詞,兩個單詞之間用一個空格隔開。而且在詞典中不會有某個外語單詞出現超過兩次。詞典之後是一個空行,然後給出一個由外語單詞組成的文檔,文檔不超過100000行,而且每行只包括一個外語單詞。輸入中出現單詞只包括小寫字母,而且長度不會超過10。
輸出
在輸出中,你需要把輸入文檔翻譯成英文,每行輸出一個英文單詞。如果某個外語單詞不在詞典中,就把這個單詞翻譯成“eh”。
樣例輸入

dog ogday
cat atcay
pig igpay
froot ootfray
loops oopslay

atcay
ittenkay
oopslay

樣例輸出

cat
eh
loops

分析:
這個題是用一個詞來查找另一個詞,所以可以用map來存儲單詞。
這個題有兩個任意的輸入所以第一組單詞可以用getline來進行輸入,如果getline的輸入爲空,那麼停止輸入。getline每次會輸入一行,在輸入之後還要再將輸入的兩個單詞拆分然後存到map中。
將輸入的兩個單詞進行拆分可以用stringstream來完成,stringstream在<sstream>頭文件中。

stringstream ss(s)   //定義ss並將字符串s放入ss中
sin>>a>>b;           //將ss中的兩個單詞分別輸入字符串a和b中

有了stringstream就可以很方便的輸入到s中的兩個單詞進行拆分了。
實現代碼:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <map> 
#include <sstream>
using namespace std;
string s,a,b;
map<string, string>m;
int main()
{
	while (getline(cin, s) && s != "")  //輸入字符串s,如果輸入的s爲空則
	{                                   //停止輸入
		stringstream ss(s);             //定義ss並將字符串s放入ss中
		ss>>a>>b;                //將ss中的兩個單詞分別輸入字符串a和b中
		m[b]=a;                  //將字符串b映射到a
	}
	while(cin>>s)               
	{                                 //輸入s,如果s沒有相應的映射則輸出eh
		if(m[s]=="") cout<<"eh"<<endl; 
		else cout<<m[s]<<endl;        //否則輸出s相應的映射。
	}
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章