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, str):
"""
:type pattern: str
:type str: str
:rtype: bool
"""
arr = str.split(" ")
if len(arr) != len(pattern):
return False
f1 = {}
i = 0
for x in pattern:
if x in f1.keys():
f1[x].append(i)
else:
f1[x] = [i];
i+=1
f2 = {}
i = 0
for x in arr:
if x in f2.keys():
f2[x].append(i)
else:
f2[x] = [i]
i+=1
for x in f1.values():
if x not in f2.values():
return False
return True