MLE,60pts,还能优化吗?
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
unordered_map<string, bool> M, M1[10005];
int main() {
ll n, m;
cin >> n >> m;
string s;
for (int i = 1; i <= n; i++) {
cin >> s;
M.insert(make_pair(s, true));
}
string t;
char t1;
for (int i = 1; i <= m; i++) {
cin >> s;
if (M[s]) {
cout << -1 << endl;
continue;
}
for (char j = 'a'; j <= 'z'; j++) {
for (int k = 0; k <= s.size(); k++) {
t = "";
t += j;
s.insert(k, t);
if (M[s]) {
M1[i].insert(make_pair(s, 1));
}
s.erase(k, 1);
}
}
for (char j = 'a'; j <= 'z'; j++) {
for (int k = 0; k < s.size(); k++) {
t = "";
t += j;
t1 = s[k];
s.replace(k, 1, t);
if (M[s]) {
M1[i].insert(make_pair(s, 1));
}
t = "";
t += t1;
s.replace(k, 1, t);
}
}
for (int j = 0; j < s.size(); j++) {
t1 = s[j];
t = "";
t += t1;
s.erase(j, 1);
if (M[s]) {
M1[i].insert(make_pair(s, 1));
}
s.insert(j, t);
}
cout << M1[i].size() << endl;
}
return 0;
}