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.
Notes:
You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.
Solution: HashMap
class Solution(object):
def wordPattern(self, pattern, s):
"""
:type pattern: str
:type s: str
:rtype: bool
"""
words = s.split()
if len(words) != len(pattern):
return False
char_word = dict()
word_char = dict()
for char, word in zip(pattern, words):
if char in char_word and char_word[char] != word:
return False
if word in word_char and word_char[word] != char:
return False
char_word[char] = word
word_char[word] = char
return True