#include <cstdio>
#include <cstring>
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
int n,l;
char a[105][15],b[105][15],c[1005],d[1005];
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s%s",a[i],b[i]);
}
scanf("%s",c);
int cc=strlen(c);
c[cc]='.';
for(int i=0;i<strlen(c);i++)
{
if(c[i]<'a'||c[i]>'z')
{
bool f=false;int word_num=-1;
for(int kk=0;kk<n;kk++)
{
if(f==false&&strlen(a[kk])==l)
{
for(int j=0;j<l;j++)
{
if(d[j]!=a[kk][j])
{
f=false;
break;
}
else
{
word_num=j;
f=true;
}
}
}
}
if(f==true)
{
for(int mm=0;mm<l;mm++)
{
printf("%c",b[word_num][mm]);
}
f=false;word_num=-1;
}
else
{
printf("UNK");
}
if(i!=strlen(c)-1)printf("%c",c[i]);
l=0;
f=false;
memset(d,0,sizeof(d));
}
else
{
d[l]=c[i];
l++;
}
}
return 0;
}
我的思路是:如果是字母,就把他存进数组,遇到标点就用for去找有没有匹配的翻译,有的话就输出对应翻译及标点,没有的话就输出UKN。 结果0分,大佬求条QWQ