0290 - Word Pattern

0290 - Word Pattern

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.

Examples

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

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

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.

Java Solution

class Solution {
    public boolean wordPattern(String pattern, String s) {
        String[] words = s.split(" ");
        if(words.length != pattern.length()) return false;
        
        HashMap wordMap = new HashMap<>();
        
        for(int i = 0; i < words.length; i++) {
            if(!wordMap.containsKey(words[i])){
                wordMap.putIfAbsent(pattern.charAt(i), words[i]);
                wordMap.putIfAbsent(words[i], pattern.charAt(i));
            }
            if(!words[i].equals(wordMap.get(pattern.charAt(i)))) return false;
        }
        return true;
    }
}

Last updated