HDU - 1075 What Are You Talking About
题意:
给你一些英文对应的火星文,将输入的火星文句子转换为英文。(标点符号和未给出的转换单词原样输出)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<set>
#include<map>
#include<cctype>
#include<sstream> //istringstream 的头文件
using namespace std;
char s[10010];
char ss[20];
map<string,string> m;
string str1,str2;
int main()
{
scanf("%s ",&s);
while(gets(s) && s[0]!='E')
{
istringstream str(s);
str>>str1>>str2;
m[str2] = str1;
}
scanf("%s ",&s);
while(gets(s) && s[0]!='E')
{
int len = strlen(s);
int k = 0;
for(int i=0;i<len;i++)
{
if(isalpha(s[i])) //检验是否为字母
{
ss[k++] = s[i];
}
else
{
str1 = ss;
if(m[str1]=="") //不存在转换关系 原样输出
printf("%s%c",ss,s[i]);
else
printf("%s%c",m[str1].c_str(),s[i]);
memset(ss,0,sizeof(ss));
k = 0;
}
}
printf("\n");
}
return 0;
}