题目
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.
代码
class Solution(object):
def wordPattern(self, pattern, str):
"""
:type pattern: str
:type str: str
:rtype: bool
"""
if pattern==None or str==None or pattern=='' or str=='':
return False
items = str.split(' ')
if len(items) != len(pattern):
return False
w_p = {}
p_w = {}
for w,p in zip(items,pattern):
if w not in w_p and p not in p_w:
w_p[w] = p
p_w[p] = w
elif w in w_p:
if p != w_p[w]:
return False
elif p in p_w:
if w != p_w[p]:
return False
return True