給定一種規律 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; } }