1234567891011121314151617181920212223 |
- func wordPattern(pattern string, str string) bool {
- words := strings.Split(str, " ")
- if len(words) != len(pattern) {
- return false
- }
- r2s := make(map[rune]string)
- s2r := make(map[string]rune)
- for i, p := range pattern {
- if s, ok := r2s[p]; ok {
- if s != words[i] {
- return false
- }
- }
- if r, ok := s2r[words[i]]; ok {
- if r != p {
- return false
- }
- }
- r2s[p] = words[i]
- s2r[words[i]] = p
- }
- return true
- }
|