HTMLify

LeetCode - Word Pattern - Go
Views: 2 | Author: abh
func wordPattern(pattern string, s string) bool {
    var words []string
    mapping := make(map[rune]string)
    var lb int

    for i:=0; i<len(s); i++ {
        if i+1 == len(s) || s[i+1] == ' ' {
            words = append(words, s[lb:i+1])
            lb = i+2
        }
    }
    
    if len(pattern) != len(words) {
        return false
    }

    for i, c := range pattern {
        word := words[i]
        var e bool = false
        for key, value := range mapping {
            if key == c {
                e = true
            }
            if key == c && word != value {
                return false
            }
            if value == word && key != c {
                return false
            }
        }
        if !e {
            mapping[c] = word
        }
    }
    return true
}

Comments