動機

水題

Problem

Given a pattern and a string s, find if s 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 s.

 

Example 1:

Input: pattern = abba, s = dog cat cat dogOutput: true

Example 2:

Input: pattern = abba, s = dog cat cat fishOutput: false

Example 3:

Input: pattern = aaaa, s = dog cat cat dogOutput: false

Example 4:

Input: pattern = abba, s = dog dog dog dogOutput: false

 

Constraints:

  • 1 <= pattern.length <= 300
  • pattern contains only lower-case English letters.
  • 1 <= s.length <= 3000
  • s contains only lower-case English letters and spaces ' '.
  • s does not contain any leading or trailing spaces.
  • All the words in s are separated by a single space.

Sol

class Solution:
    def wordPattern(self, s, t):
        t = t.split()
        if len(s) != len(t):
            return False
        tbl = {}
        for i in range(len(s)):
            if s[i] in tbl.keys() and t[i] in tbl.values():
                if tbl[s[i]] != t[i]:
                    return False
            elif s[i] in tbl.keys() or t[i] in tbl.values():
                return False
            else:
                tbl[s[i]] = t[i]
        return True