leetcode-290题:word pattern

题目

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.

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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