这题一开始尝试了很多方法,都超时。然后学习了别人的做法,在初始化的时候,把每个字符串的所有前缀和后缀(都包括自身)给列出来,然后把所有的组合,用 前缀-后缀,原字符串 的格式存到map里,然后找的时候直接查map。虽然过了,但是真的很慢,而且这种方法也挺蠢的。。
class WordFilter {
Map<String, Integer> map;
public WordFilter(String[] words) {
map = new HashMap<>();
for (int i = 0; i < words.length; i++) {
for (int j = 1; j <= words[i].length(); j++) {
String head = words[i].substring(0, j);
for (int k = 0; k < words[i].length(); k++) {
String tail = words[i].substring(k);
map.put(head + "-" + tail, i);
}
}
}
}
public int f(String pref, String suff) {
return map.getOrDefault(pref + "-" + suff, -1);
}
}
/**
* Your WordFilter object will be instantiated and called as such:
* WordFilter obj = new WordFilter(words);
* int param_1 = obj.f(pref,suff);
*/