【哈希】290. 单词规律

290. 单词规律

解题思路

  • 创建一个hashMap 将pattern的每一个字母作为key
  • 将str的每一个单词作为value
  • 遍历pattern字符串 对于每一个元素 获取它的Value,如果Value不相等 说明模式不匹配
  • 如果value相等 添加新的Key 但是需要判断value是否已经用过 这里一个value不能对应不同的key
class Solution {
    public boolean wordPattern(String pattern, String s) {
        // 创建一个hashMap 将pattern的每一个字母作为key
        // 将str的每一个单词作为value

        Map<Character,String> map = new HashMap<>();
        // 将s的空格全部取出
        String[] array = s.split(" ");

        // 如果两个字符串长度不一致 直接false
        char[] p = pattern.toCharArray();

        if(p.length != array.length){
            return false;
        }

        for(int i = 0; i < p.length; i++){
            if(map.containsKey(p[i])){
                // 如果存在 判断是不是相等
                if(map.get(p[i]).equals(array[i]) == false){
                    // 如果这两个字符串不相等  说明模式不匹配
                    return false;
                }
            }else{
                // 添加新的Key  需要判断value是不是已经用过 不能一个value 对应不同的Key
                if(map.containsValue(array[i])){
                    return false;
                }
                map.put(p[i],array[i]);
            }
        }


        return true;
    }
}

你可能感兴趣的:(#,Leetcode,java,算法,数据结构)