描述:写字典 英文+空格+词语,然后输入,输入最多不超过100002个 单词 ,最后一个回车,输入词语,输出词语的英语。
刚开始看到题,寻思用 string 输入,用两个string变量数组 把空格 两边的单词分别写入 两个数组中,但是,没有想到如何结束第一个while语句,第二个while,cin(string),然后从
第二个数组中寻找 是否有 输入的string变量,如果有从第一个string数组中输出。
Code:
#if 0 //my
#include<bits/stdc++.h>
using namespace std;
int main()
{
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,ai[100],bi[100],aii;
int ii,n,i=0;
while(getline(cin,a))
{
if(a=="") break;
n=a.size();
ii=a.find(" ");
ai[i]=a.substr(0,ii);
bi[i]=a.substr(ii+1,n-ii);
i++;
}
while(getline(cin,aii))
{
int ni=0;
for(int i=0;i<100;i++)
{
if(bi[i]==aii)
{
cout<<ai[i]<<endl;ni=1;break;
}
;
}
if(ni==0)
cout<<"eh"<<endl;
}
int ii,n,i=0;
while(getline(cin,a))
{
if(a=="") break;
n=a.size();
ii=a.find(" ");
ai[i]=a.substr(0,ii);
bi[i]=a.substr(ii+1,n-ii);
i++;
}
while(getline(cin,aii))
{
int ni=0;
for(int i=0;i<100;i++)
{
if(bi[i]==aii)
{
cout<<ai[i]<<endl;ni=1;break;
}
;
}
if(ni==0)
cout<<"eh"<<endl;
}
}
#endif
这里面的 if(a=="") break; 结束while(),是借鉴百度上的代码,有木有,有木有,然后运行发现用时超长,看了一下的代码,发现用map的效率会更高,尤其面对数据超多的时候,有木有。
#if 0 // 2题 百度
#include<iostream>
#include<map>
#include<string>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
map<string,string>a ;
char s[30],s1[12],s2[12];
int n,i;
while(gets(s))
{
if(strcmp(s,"")==0) break;
else
{
n=strlen(s);
for(i=0;i<n;i++)
{
if(s[i]==' ')break;
}
}
strncpy(s1,s,i);
s1[i]='\0';
strncpy(s2,s+i+1,n-i);
s2[n-i]='\0';
a[s2]=s1;
}
while(cin>>s2)
{
if(a[s2]=="")
cout<<"eh"<<endl;
else cout<<a[s2]<<endl;
}
}
#endif
#include<iostream>
#include<map>
#include<string>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
map<string,string>a ;
char s[30],s1[12],s2[12];
int n,i;
while(gets(s))
{
if(strcmp(s,"")==0) break;
else
{
n=strlen(s);
for(i=0;i<n;i++)
{
if(s[i]==' ')break;
}
}
strncpy(s1,s,i);
s1[i]='\0';
strncpy(s2,s+i+1,n-i);
s2[n-i]='\0';
a[s2]=s1;
}
while(cin>>s2)
{
if(a[s2]=="")
cout<<"eh"<<endl;
else cout<<a[s2]<<endl;
}
}
#endif
发现了用map 然后自己写了一个:
//2.
#if 0 //my
#include<bits/stdc++.h>
using namespace std;
int main()
{
map<string,string>m;
string a,ai,bi;
int ii,n;
while(getline(cin,a))
{
if(a=="") break;
n=a.size();
ii=a.find(" ");
ai=a.substr(0,ii);
bi=a.substr(ii+1,n-ii);
m[bi]=ai;
}
while(getline(cin,ai))
{
if(m.count(ai))
cout<<m[ai]<<endl;
else cout<<"eh"<<endl;
}
#if 0 //my
#include<bits/stdc++.h>
using namespace std;
int main()
{
map<string,string>m;
string a,ai,bi;
int ii,n;
while(getline(cin,a))
{
if(a=="") break;
n=a.size();
ii=a.find(" ");
ai=a.substr(0,ii);
bi=a.substr(ii+1,n-ii);
m[bi]=ai;
}
while(getline(cin,ai))
{
if(m.count(ai))
cout<<m[ai]<<endl;
else cout<<"eh"<<endl;
}
}
#endif