Leetcode: Word Pattern

Word Pattern

Similar Problems:

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.

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.
You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.

Github: code.dennyzhang.com

Credits To: leetcode.com

Leave me comments, if you have better ways to solve.

## Blog link: https://code.dennyzhang.com/word-pattern
## Basic Ideas: hasmap + set
## Complexity: Time O(n), Space O(n)
class Solution(object):
    def wordPattern(self, pattern, str):
        :type pattern: str
        :type str: str
        :rtype: bool
        d = {}
        word_list, value_set = str.split(' '), set([])
        if len(pattern) != len(word_list): return False
        for i in range(len(pattern)):
            ch = pattern[i]
            if ch in d:
                if d[ch] != word_list[i]: return False
                if word_list[i] in value_set: return False
                d[ch] = word_list[i]
        return True

Share It, If You Like It.

Leave a Reply

Your email address will not be published.