30 lines
508 B
Go
30 lines
508 B
Go
package q290
|
|
|
|
import "strings"
|
|
|
|
func wordPattern(pattern string, s string) bool {
|
|
index := map[byte]string{}
|
|
invIndex := map[string]struct{}{}
|
|
|
|
fields := strings.Fields(s)
|
|
if len(fields) != len(pattern) {
|
|
return false
|
|
}
|
|
|
|
for i, word := range fields {
|
|
if w, ok := index[pattern[i]]; ok {
|
|
if w != word {
|
|
return false
|
|
}
|
|
} else {
|
|
if _, ok := invIndex[word]; ok {
|
|
return false
|
|
}
|
|
index[pattern[i]] = word
|
|
invIndex[word] = struct{}{}
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
var _ = wordPattern
|