動機
水題
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 <= 300patterncontains only lower-case English letters.1 <= s.length <= 3000scontains only lower-case English letters and spaces' '.sdoes not contain any leading or trailing spaces.- All the words in
sare 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