课程代码
#include <bits/stdc++.h>
using namespace std;
// //队列
// queue<int> q; //创建一个队列
// q.push(x); //把x转入到队尾
// q.front(); //获取队首
// q.back(); //获取队尾
// q.size(); //获取元素个数
// q.pop(); //删除队首
// q.empty(); //如果空,返回1,否则返回0
// stack<int> s; //栈
// s.push(x); //把x压入栈
// s.top(); //获取栈顶
// s.size(); //获取元素个数
// s.pop(); //删除栈顶
// s.empty() //如果空,返回1,否则返回0
// int a[105];
// vector<int> v;
// set<int> s; //集合
int main() {
// // v.push_back(x); //把x存入到v的最后
// for(int i=1; i<=5; i++) v.push_back(i);
// // for(auto x : v) cout << x << " ";
// cout << v.size(); //获取v的元素个数
// // cout << v[2] << endl;
// set<int> s; //创建一个集合
// s.insert(x); //往s中插入x,并排好序:从小到大,并且去重
// s.size(); //获取到集合的元素个数
// s.clear(); //清空集合
// for(int i=1; i<=5; i++){
// int x;
// cin >> x;
// s.insert(x);
// }
// cout << s.size() << endl;
// for(auto x : s) cout << x << " ";
// freopen("random.in", "r", stdin);
// freopen("random.out", "w", stdout);
// int n;
// cin >> n;
// set<int> s;
// for(int i=1; i<=n; i++){
// int x;
// cin >> x;
// s.insert(x);
// }
// cout << s.size() << endl;
// for(auto x : s) cout << x << " ";
// map<int, int> m; //键值对map<键, 值> m; 1:4 2:4 3:10
// m.count(x); //如果有键x,那么返回1,否则返回0
// cin >> n >> c;
// for(int i=1; i<=n; i++){
// scanf("%d", &a[i]);
// m[a[i]]++; //记录a[i]出现的次数
// a[i] -= c; //此时a[i]表示的是第i个数字对应的B
// }
// long long cnt = 0;
// for(int i=1; i<=n; i++) cnt += m[a[i]];
// cout << cnt;
map<string, string> m; //A单词对应一个B单词
int n;
cin >> n;
for(int i=1; i<=n; i++){
string s1, s2;
cin >> s1 >> s2;
m[s1] = s2; //让A国的单词s1对应B国的单词s2
}
string s; //完整输入的这句话
cin >> s;
string tmp; //用来记录每一个单词
for(int i=0; s[i]; i++){
if(s[i] >= 'a' && s[i] <='z') tmp += s[i];
else{ //说明s[i]是一个符号,不是字母
if(s[i-1]>='a' && s[i-1]<='z'){
//如果tmp出现过
if(m.count(tmp)) cout << m[tmp];
//没有tmp
else cout << "UNK";
}
cout << s[i];
tmp = "";
}
}
if(m.count(tmp)) cout << m[tmp];
//没有tmp
else cout << "UNK";
return 0;
}