预处理所有的情况,然后查找
class WordFilter {
public:
unordered_map<string, unordered_map<string, int>> visit;
WordFilter(vector<string>& words) {
for (int n = 0; n < words.size(); ++n) {
const auto &index = words[n];
string tmp = index;
reverse(tmp.begin(), tmp.end());
for (int i = 0; i <= index.size(); i++)
for (int j = 0; j <= index.size(); j++)
//cout << index.substr(0, i) << "==" << tmp.substr(0, j) << endl,
visit[index.substr(0, i)][tmp.substr(0, j)] = n;
}
}
int f(string prefix, string suffix) {
reverse(suffix.begin(), suffix.end());
return visit.count(prefix) > 0 && visit[prefix].count(suffix) > 0 ? visit[prefix][suffix] : - 1;
}
};
/**
* Your WordFilter object will be instantiated and called as such:
* WordFilter* obj = new WordFilter(words);
* int param_1 = obj->f(prefix,suffix);
*/