代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
int n;
cin >> n;
vector<string> A, B;
for (int i = 0; i < n; i++) {
string a, b;
cin >> a >> b;
A.push_back(a);
B.push_back(b);
}
int len = 0;
string s;
cin >> s;
for (int i = 0; i < s.size(); i++) {
if (s[i] == '!' or s[i] == '(' or s[i] == ')' or s[i] == '-' or s[i] == ',' or s[i] == '.' or s[i] == '[' or s[i] == ']' or s[i] == '{' or s[i] == '}' or s[i] == '/' or s[i] == '|' or s[i] == '"' or s[i] == '\'' or s[i] == ';' or s[i] == ':' or s[i] == '\\' or s[i] == '?' or s[i] == '<' or s[i] == '>') {
bool is = true;
for (int j = 0; j < n; j++) {
if (A[j] == s.substr(i - len, len)) {
cout << B[j] << s[i];
len = 0;
is = false;
break;
}
}
if (is) {
if (s.substr(i - len, len + 1) == "!" or s.substr(i - len, len + 1) == "(" or s.substr(i - len, len + 1) == ")" or s.substr(i - len, len + 1) == "-" or s.substr(i - len, len + 1) == "," or s.substr(i - len, len + 1) == "." or s.substr(i - len, len + 1) == "[" or s.substr(i - len, len + 1) == "]" or s.substr(i - len, len + 1) == "{" or s.substr(i - len, len + 1) == "}" or s.substr(i - len, len + 1) == "/" or s.substr(i - len, len + 1) == "|" or s.substr(i - len, len + 1) == "'" or s.substr(i - len, len + 1) == "\"" or s.substr(i - len, len + 1) == ";" or s.substr(i - len, len + 1) == ":" or s.substr(i - len, len + 1) == "\\" or s.substr(i - len, len + 1) == "?" or s.substr(i - len, len + 1) == "<" or s.substr(i - len, len + 1) == ">") {
cout << s[i];
} else {
cout << "-UNK-" << s[i];
}
}
} else {
len++;
}
}
int i = s.size();
if (s[i] == '!' or s[i] == '(' or s[i] == ')' or s[i] == '-' or s[i] == ',' or s[i] == '.' or s[i] == '[' or s[i] == ']' or s[i] == '{' or s[i] == '}' or s[i] == '/' or s[i] == '|' or s[i] == '"' or s[i] == '\'' or s[i] == ';' or s[i] == ':' or s[i] == '\\' or s[i] == '?' or s[i] == '<' or s[i] == '>') {
return 0;
}
bool is = true;
for (int j = 0; j < n; j++) {
if (A[j] == s.substr(s.size() - len, len)) {
cout << B[j];
len = 0;
is = false;
break;
}
}
if (s.substr(i - len, len + 1) == "!" or s.substr(i - len, len + 1) == "(" or s.substr(i - len, len + 1) == ")" or s.substr(i - len, len + 1) == "-" or s.substr(i - len, len + 1) == "," or s.substr(i - len, len + 1) == "." or s.substr(i - len, len + 1) == "[" or s.substr(i - len, len + 1) == "]" or s.substr(i - len, len + 1) == "{" or s.substr(i - len, len + 1) == "}" or s.substr(i - len, len + 1) == "/" or s.substr(i - len, len + 1) == "|" or s.substr(i - len, len + 1) == "'" or s.substr(i - len, len + 1) == "\"" or s.substr(i - len, len + 1) == ";" or s.substr(i - len, len + 1) == ":" or s.substr(i - len, len + 1) == "\\" or s.substr(i - len, len + 1) == "?" or s.substr(i - len, len + 1) == "<" or s.substr(i - len, len + 1) == ">") {
cout << s[i];
} else if (is) {
cout << "UNK";
}
return 0;
}