Prefix and Suffix Search Solutions in Go
Number 745
Difficulty Hard
Acceptance 34.2%
Link LeetCode
Other languages —
Solutions
Go solution by halfrost/LeetCode-Go
package leetcodeimport "strings"// 解法一 查找时间复杂度 O(1)type WordFilter struct {words map[string]int}func Constructor745(words []string) WordFilter {wordsMap := make(map[string]int, len(words)*5)for k := 0; k < len(words); k++ {for i := 0; i <= 10 && i <= len(words[k]); i++ {for j := len(words[k]); 0 <= j && len(words[k])-10 <= j; j-- {ps := words[k][:i] + "#" + words[k][j:]wordsMap[ps] = k}}}return WordFilter{words: wordsMap}}func (this *WordFilter) F(prefix string, suffix string) int {ps := prefix + "#" + suffixif index, ok := this.words[ps]; ok {return index}return -1}// 解法二 查找时间复杂度 O(N * L)type WordFilter_ struct {input []string}func Constructor_745_(words []string) WordFilter_ {return WordFilter_{input: words}}func (this *WordFilter_) F_(prefix string, suffix string) int {for i := len(this.input) - 1; i >= 0; i-- {if strings.HasPrefix(this.input[i], prefix) && strings.HasSuffix(this.input[i], suffix) {return i}}return -1}/*** Your WordFilter object will be instantiated and called as such:* obj := Constructor(words);* param_1 := obj.F(prefix,suffix);*/