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.
Credits:
Special thanks to @minglotus6 for adding this problem and creating all test cases.
Subscribe to see which companies asked this question
class Solution(object):
def wordPattern(self, pattern, str):
#print pattern,str
p = pattern
str = str.split(' ')
#print str
dic = {}
#print dic,len(str)
if len(str) != len(p):
return False
for i in xrange(len(str)):
if p[i] not in dic:
if str[i] in dic.values():
return False
dic[p[i]] = str[i]
else:
if dic[p[i]] != str[i]:
return False
return True