单词规律

给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。

这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。

示例

输入: pattern = "abba", str = "dog cat cat dog"
输出: true

解题思路:双向映射

class Solution {
    public boolean wordPattern(String pattern, String s) {
                if (null == pattern || pattern.length() == 0) {
            return false;
        }
        if (null == s || s.length() == 0) {
            return false;
        }
        char[] chars = pattern.toCharArray();
        String[] strArr = s.split(" ");
        if (chars.length != strArr.length) {
            return false;
        }
        Map<Character, String> char2Str = new HashMap();
        Map<String, Character> str2Char = new HashMap<>();

        for (int i = 0; i < chars.length; i++) {
            char ch = chars[i];
            String str = strArr[i];
            if (char2Str.containsKey(ch) && !char2Str.get(ch).equalsIgnoreCase(str)) {
                return false;
            }
            if (str2Char.containsKey(str) && !str2Char.get(str).equals(ch)) {
                return false;
            }

            char2Str.put(ch, str);
            str2Char.put(str, ch);
        }

        return true;
    }
}

 

posted on 2021-08-29 16:55  溪水静幽  阅读(60)  评论(0)    收藏  举报