Intuition

Use a set and a map to track words.

Approach

Complexity

Code

class Solution:
    def wordPattern(self, pattern: str, s: str) -> bool:
        words = s.split(" ")

        if len(pattern) != len(words):
            return False

        m = {}
        st = set()
        
        for i, p in enumerate(pattern):
            if p not in m:
                if words[i] in st:
                    return False
                m[p] = words[i]
                st.add(words[i])
            else:
                if words[i] != m[p]:
                   return False
        
        return True