Java實現 LeetCode 290 單詞規律

290. 單詞規律

給定一種規律 pattern 和一個字符串 str ,判斷 str 是否遵循相同的規律。java

這裏的 遵循 指徹底匹配,例如, pattern 裏的每一個字母和字符串 str 中的每一個非空單詞之間存在着雙向鏈接的對應規律。ide

示例1:spa

輸入: pattern = 「abba」, str = 「dog cat cat dog」
輸出: true
示例 2:code

輸入:pattern = 「abba」, str = 「dog cat cat fish」
輸出: false
示例 3:字符串

輸入: pattern = 「aaaa」, str = 「dog cat cat dog」
輸出: false
示例 4:get

輸入: pattern = 「abba」, str = 「dog dog dog dog」
輸出: false
說明:
你能夠假設 pattern 只包含小寫字母, str 包含了由單個空格分隔的小寫字母。string

class Solution {
    public static boolean wordPattern(String pattern, String str) {
        if(pattern == null || str==null) return false;
        String[] string = str.split(" ");
        if(pattern.length() != string.length) return false;
        HashMap<Character,String> map = new HashMap<>();

        for(int i=0; i<pattern.length(); i++){
            char tmp = pattern.charAt(i);
            //key已經在
            if(map.containsKey(tmp)){
                //不對應就失敗
                if(!map.get(tmp).equals(string[i])) return false;
            }
            //key不存在
            else{
                //兩個value的值同樣 a-dog b-dog->false
                if (map.containsValue(string[i])) return false;
                else
                //添加k-v值
                map.put(tmp,string[i]);
            }
        }
        return true;
    }
}
相關文章
相關標籤/搜索