文章目录
-
- 题目
- 思路
- AC代码
题目
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiNx8FesU2cfdGLwczX0xiRGZkRGZ0Xy9GbvNGLwIzXlpXazxSMJR0TZVHT1M1VZZjRpJXNOt0S2EUaMVTQClGVF5UMR9Fd4VGdsATNfd3bkFGazxycykFaKdkYzZUbapXNXlleSdVY2pESa9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwQTO3ETN2QmZhVjY4UDOhdzY3QDZ4EmN5cTY3EDN5MzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
思路
这题比较容易,108在oj也能过就暴力循环了,用哈希+二分会不会简单点呢。。
AC代码
#include <bits/stdc++.h>
using namespace std;
unordered_map<string, string> m;
string s, name, func, found;
int a;
int main() {
while (getline(cin, s), s != "@END@") {//注意两者之间要加一个逗号用以区分
a = s.find(']');
name = s.substr(0, a + 1);
func = s.substr(a + 2);
m[name] = func;
}
unordered_map<string, string>::iterator it;
int num;
scanf("%d", &num);
for (int i = 0; i < num; ++i) {
bool flag = false;
getline(cin, found);
for (it = m.begin(); it != m.end(); ++it) {
if (found == it->first) {
flag = true;
cout << it->second << endl;
} else if (found == it->second) {
flag = true;
a = it->first.size();
cout << it->first.substr(1, a - 2) << endl;
}
}
if (!flag) {
cout << "what?" << endl;
}
}
}