简单

600

相关企业

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

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

示例1:

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

示例 2:

输入:pattern ="abba", s ="dog cat cat fish"输出: false

示例 3:

输入: pattern ="aaaa", s ="dog cat cat dog"输出: false

提示:

class Solution {
    public boolean wordPattern(String pattern, String s) {
        return isVailded(pattern, s);
    }
    boolean isVailded(String pattern, String s){
        Map<String, String> map = new HashMap<>();
        char [] p = pattern.toCharArray();
        String [] ss = s.split(" ");
        if(ss.length != p.length) return false;
        for(int i = 0; i < p.length; i ++){
            String s1 = String.valueOf(p[i]);
            String s2 = ss[i]; 
            if(map.containsKey(s1) && !map.get(s1).equals(s2)){
                return false;
            }
            map.put(s1, s2);
        }
        //避免values 值都是一样的,但是却对应着不同的key
        HashSet<String> uniqueValues = new HashSet<>(map.values());
        if(uniqueValues.size() != map.size()) return false;
        return true;
    }
}