動機
水題
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