今天比赛做了一道很简单的基础语法水题,因为好久没用结构体+string类型,竟错了两遍,警醒自己应温故知新。
题目描述
小明发现了一个外星文明,作为翻译官,拿到了一份外星球语言与外星语言的单词对照表,现在有个外星球的句子,需要翻译成外星语言发送给外星人。
输入
第一行两个整数n和m,表示单词对照表单词对数和需翻译句子的单词数
随后n行,每行两个字符串,第一个表示外星球的单词,第二个表示与其对应外星语言的单词
最后一行有m个单词,表示需翻译的外星球语言的句子,每个单词之间有一个空格
1<=n,m<=10000
输出
一行表示翻译成外星语言的句子,每个单词之间一个空格,若从对照表中查不到某单词,则输出与单词相同长度的 “*”
每个单词长度<15
样例输入
5 4
abc asd
hjk dfgr
sd dengd
koi miu
ssd hhd
hjk aaa ssd abc
样例输出
dfgr *** hhd asd
解题思路(个人)
注意:(都是一些简单的语法问题)
用一个结构体存储字符串,用c++中string类型声明字符串,这里需要注意的是结构体成员的输入和调用方式,以及string类型中一些常用函数的使用。
AC代码
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
const int N=10010;
struct qq
{
string a[N];
string b[N];
string s[N];
}qq;
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>qq.a[i]>>qq.b[i]; //注意结构体成员的输入方式
for(int i=1;i<=m;i++)
cin>>qq.s[i];
for(int i=1;i<=m;i++)
{
int t=0;
int f=qq.s[i].size(); //size()函数可计算字符串中字母个数
for(int j=1;j<=n;j++)
{
if(qq.s[i]==qq.a[j]) //string类型字符串可直接进行比较
{
t=1;
cout<<qq.b[j];
break;
}
}
if(t==0)
{
for(int i=1;i<=f;i++)
{
cout<<"*";
}
}
cout<<" ";
}
return 0;
}