Given manywords
,words[i]
has weighti
.
Design a classWordFilter
that supports one function,WordFilter.f(String prefix, String suffix)
. It will return the word with givenprefix
andsuffix
with maximum weight. If no word exists, return -1.
Examples:
Input:
WordFilter(["apple"])
WordFilter.f("a", "e") // returns 0
WordFilter.f("b", "") // returns -1
Note:
words
has length in range
[1, 15000]
.words.length
queries
WordFilter.f
may be made.words[i]
has length in range
[1, 10]
.prefix, suffix
have lengths in range
[0, 10]
.words[i]
and
prefix, suffix
queries consist of lowercase letters only.class WordFilter {
HashMap<String, Integer> map = new HashMap<>();
public WordFilter(String[] words) {
for(int w = 0; w < words.length; w++){
for(int i = 0; i <= 10 && i <= words[w].length(); i++){
for(int j = 0; j <= 10 && j <= words[w].length(); j++){
map.put(words[w].substring(0, i) + "#" + words[w].substring(words[w].length()-j), w);
}
}
}
}
public int f(String prefix, String suffix) {
return (map.containsKey(prefix + "#" + suffix))? map.get(prefix + "#" + suffix) : -1;
}
}