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(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