题目:
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:
- pattern =
"abba"
, str ="dog cat cat dog"
should return true. - pattern =
"abba"
, str ="dog cat cat fish"
should return false. - pattern =
"aaaa"
, str ="dog cat cat dog"
should return false. - 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:
def wordPattern(self, pattern, str):
"""
:type pattern: str
:type str: str
:rtype: bool
"""
d1 = dict()
d2 = dict()
t = str.split(" ")
if len(pattern)!=len(t):
return False
for i in range(len(pattern)):
s1 = d1.get(pattern[i])
s2 = d2.get(t[i])
if s1==None and s2 == None:
d1[pattern[i]] = t[i]
d2[t[i]] = pattern[i]
elif s1!=t[i] or s2!=pattern[i]:
return False
return True