ACM1、百度语言翻译机

百度语言翻译机 
百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套他们独特的缩率语。他们在平时的交谈,会议,甚至在各中技术文档中都会大量运用。 
为了让新员工可以更快地适应百度的文化,更好地阅读公司的技术文档,人力资源部决定开发一套专用的翻译系统,把相关文档中的缩率语和专有名词翻译成日常语言。 

输入数据: 

输入数据包含三部分 
1. 第一行包含一个整数 N ( N<=10000 ),表示总共有多少个缩率语的词条。 
2. 紧接着有 N 行的输入,每行包含两个字符串,以空格隔开。第一个字符串为缩率语(仅包含大写英文字符,长度不超过 10 ),第二个字符串为日常语言(不包含空格,长度不超过 255 ) . 
3.从第 N+2 开始到输入结束为包含缩略语的相关文档。(总长度不超过 1000000 个字符) 

输出数据: 
输出将缩率语转换成日常语言的文档。(将缩率语转换成日常语言,其他字符保留原样) 
输入样例




PS 门户搜索部 

NLP 自然语言处理 

PM 产品市场部 

HR 人力资源部 

PMD 产品推广部 

MD 市场发展部 

百度的部门包括 PS , PM , HR , PMD , MD 等等,其中 PS 还包括 NLP 小组。 

输出样例



百度的部门包括门户搜索部,产品市场部,人力资源部,产品推广部,市场发展部等等,其中门户搜索部还包括自然语言处理小组。



注意: 

1 . 输入数据中是中英文混合的,中文采用 GBK 编码。 

2 . 为保证答案的唯一性,缩率语的转换采用正向最大匹配(从左到右为正方向)的原则。请注意输入例子中 PMD 的翻译。 


亲测可用。当然没有加正向最大匹配,所以没用空格隔开的缩写是替换不掉的。but题目给的例子本来就是用空格隔开了的,所以应该也算符合要求吧
#include <iostream>
#include <map>
#include <string>
#include <cstdlib>
#include <cstdio>

using namespace std;

int main()
{
    int N;
    cin >> N;

    map<string, string> convert;
    for(int i = 0; i < N; ++i)
    {
        string key, value;
        cin >> key >> value;
        convert[key] = value;
        //cout<<"key"<<key<<"value"<<value<<endl;
    }
    
    string word ;
    string result;
    while( cin >> word  )
    {
        while( convert.count(word) )
        {
        word = convert[word];
        }
        result += word;
        result += " ";
        if( getchar() == '\n')
        break;
    }
    
    cout << result << endl;

    return 0;
}

1、C++ map的基本操作和用法:http://www.oschina.net/question/234345_48876

2、用count函数来判定关键字是否出现,其缺点是无法定位数据出现位置,由于map的特性,一对一的映射关系,就决定了count函数的返回值只有两个,要么是0,要么是1,出现的情况,当然是返回1了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值