YTU 3722 在线翻译

问题 I: 在线翻译

时间限制: 1.00s | 内存限制: 128MB

题目描述

你最近从滑铁卢搬到了另一个大城市,这里的人们说着一种难以理解的外语。幸运的是,你带着一本词典,它可以帮助你与这里的人们沟通。

输入

输入包含不多于 10000 条词条,接着空一行,然后是待翻译的短文,包含不多于 100000 个外语单词。每一个词条占一行,包含英语单词和对应的外语单词,两者之间用空格隔开。短文中每个外语单词占 1 行。输人保证没有重复的外语单词,且每个单词都由不多于 10 个的小写字母组成。

输出

输出是翻译成英文的短文,每个英文单词占一行。如果有词典中没有出现的外语单词,则该单词应该被翻译成 eh

输入输出样例

样例输入 #1

复制

dog ogday
cat atcay
pig igpay
froot ootfray
loops oopslay

atcay
ittenkay
oopslay
样例输出 #1

复制

cat
eh
loops

思路 :

这道题我们要使用stl当中的map函数,可以将任何基本类型映射到任何基本类型。如int array[100]事实上就是定义了一个int型到int型的映射。map提供一对一的数据处理,key-value键值对,其类型可以自己定义,第一个称为关键字,第二个为关键字的值。这道题我们使用的就是字符串到字符串的映射,要注意这道题的输入还是有些麻烦的,getline一次读取一行直到读取到空字符串为止。
map.find()的使用,在容器中寻找值为k的元素,返回该元素的迭代器。否则,返回map.end()。


代码实现:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    map<string,string> mp;
    string s;
    while(getline(cin,s) && s!="")
    {
        int idx=0;
        string x,y;
        for(int i=0;i<s.size();i++)
        {
            if(s[i]==' ') idx=i;
        }
        for(int i=0;i<idx;i++) x+=s[i];
        for(int i=idx+1;i<s.size();i++) y+=s[i];
        mp[y]=x;
    }
    while(cin>>s)
    {
        if(mp.find(s)!=mp.end()) cout<<mp[s]<<endl;
        else printf("eh\n");
    }
    return 0;
}

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值