December 20, 2019

290. Word Pattern

290. Word Pattern

205. Isomorphic Strings

Two Maps

class Solution {
    public boolean wordPattern(String pattern, String str) {
        Map<Character, String> cMap = new HashMap<>();
        Map<String, Character> sMap = new HashMap<>();
        String[] words = str.split(" ");
        if (pattern.length() != words.length) {
            return false;
        }
        int len = pattern.length();
        for (int i = 0; i < len; i++) {
            if (cMap.containsKey(pattern.charAt(i))) {
                if (!cMap.get(pattern.charAt(i)).equals(words[i])) {
                    return false;
                }
            } else {
                cMap.put(pattern.charAt(i), words[i]);
            }
            if (sMap.containsKey(words[i])) {
                if (sMap.get(words[i]) != pattern.charAt(i)) {
                    return false;
                }
            } else {
                sMap.put(words[i], pattern.charAt(i));
            }
        }
        return true;
    }
}

One Map (Optimized Space)

class Solution {
    public boolean wordPattern(String pattern, String str) {
        Map<Character, String> cMap = new HashMap<>();
        String[] words = str.split(" ");
        if (pattern.length() != words.length) {
            return false;
        }
        int len = pattern.length();
        for (int i = 0; i < len; i++) {
            if (cMap.containsKey(pattern.charAt(i))) {
                if (!cMap.get(pattern.charAt(i)).equals(words[i])) {
                    return false;
                }
            } else {
                if (cMap.containsValue(words[i])) {
                    return false;
                }
                cMap.put(pattern.charAt(i), words[i]);
            }
        }
        return true;
    }
}
comments powered by Disqus