Given a pattern and a string str, find if str follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.

Examples:

  1. pattern = "abba", str = "dog cat cat dog" should return true.
  2. pattern = "abba", str = "dog cat cat fish" should return false.
  3. pattern = "aaaa", str = "dog cat cat dog" should return false.
  4. pattern = "abba", str = "dog dog dog dog" should return false.

Notes:
You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.

class Solution(object):
    def wordPattern(self, pattern, astr):
        """
        :type pattern: str
        :type str: astr
        :rtype: bool
        """
        temp  = astr.split()
        if len(temp) != len(pattern):
            return False
        p = {}
        q = {}
        for a,b in zip(pattern, temp):
            if b in p:
                if a != p[b]:
                    return False
            else:
                p[b] = a
            if a in q:
                if b != q[a]:
                    return False
            else:
                q[a] = b
        return True