Skip to content

[290] Word Pattern

https://leetcode.com/problems/word-pattern/description/

  • algorithms
  • Easy (34.14%)
  • Source Code: 290.word-pattern.py
  • Total Accepted: 136.2K
  • Total Submissions: 391.6K
  • Testcase Example: '"abba"\n"dog cat cat dog"'

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.

Example 1:

Input: pattern = "abba", str = "dog cat cat dog" Output: true

Example 2:

Input:pattern = "abba", str = "dog cat cat fish" Output: false

Example 3:

Input: pattern = "aaaa", str = "dog cat cat dog" Output: false

Example 4:

Input: pattern = "abba", str = "dog dog dog dog" Output: false

Notes: You may assume pattern contains only lowercase letters, and str contains lowercase letters that may be separated by a single space.

python
class Solution(object):
    def wordPattern(self, pattern, str):
        """
        :type pattern: str
        :type str: str
        :rtype: bool
        """
        table = {}
        slist = str.split()
        if not len(slist) == len(pattern): return False
        for idx, p in enumerate(pattern):
            if p not in table:
                table[p] = slist[idx]
            else:
                if table[p] != slist[idx]: return False

        values = table.values()
        if len(set(values)) < len(values): return False

        return True

Last updated: