题解 | #魔咒词典#
魔咒词典
http://www.nowcoder.com/practice/c6ca566fa3984fae916e6d7beae8ea7f
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main(){
string str, magicName, function;
map<string, string>myMap1, myMap2;
while(getline(cin,str)){
if(str=="@END@") break;
int pos = str.find("]");
magicName = str.substr(1,pos-1);
function = str.substr(pos+2);
myMap1[magicName] = function;
myMap2[function] = magicName;
}
int n;
scanf("%d\n",&n);
for(int i = 0; i < n; i++){
getline(cin, str);
if(str.find("]")!=string::npos){
string O = myMap1[str.substr(1,str.size()-2)];
if(O=="") cout<<"what?"<<endl;
else cout<<myMap1[str.substr(1,str.size()-2)]<<endl;
}else{
string O = myMap2[str];
if(O == "") cout<<"what?"<<endl;
else cout<<myMap2[str]<<endl;
}
}
return 0;
}本题使用map来建立魔咒名称和功能之间的映射关系,然后根据后续的查询指令来进行查找输出即可。

查看1道真题和解析