290-word-pattern¶
Try it on leetcode
Description¶
Given a pattern
and a string s
, find if s
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 s
.
Example 1:
Input: pattern = "abba", s = "dog cat cat dog" Output: true
Example 2:
Input: pattern = "abba", s = "dog cat cat fish" Output: false
Example 3:
Input: pattern = "aaaa", s = "dog cat cat dog" Output: false
Constraints:
1 <= pattern.length <= 300
pattern
contains only lower-case English letters.1 <= s.length <= 3000
s
contains only lowercase English letters and spaces' '
.s
does not contain any leading or trailing spaces.- All the words in
s
are separated by a single space.
Solution(Python)¶
class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
s = s.split(" ")
wordhashmap = {}
charhashmap = {}
if len(s) != len(pattern):
return False
for ch, word in zip(pattern, s):
if word not in wordhashmap:
wordhashmap[word] = ch
elif wordhashmap[word] != ch:
return False
if ch not in charhashmap:
charhashmap[ch] = word
elif charhashmap[ch] != word:
return False
return True