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

京公网安备 11010502036488号