1. 程式人生 > >[Leetcode] 290. 單詞模式 java hashmap

[Leetcode] 290. 單詞模式 java hashmap

 給定一種 pattern(模式) 和一個字串 str ,判斷 str 是否遵循相同的模式。

這裡的遵循指完全匹配,例如, pattern 裡的每個字母和字串 str中的每個非空單詞之間存在著雙向連線的對應模式。

示例1:

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

示例 2:

輸入:pattern = "abba", str = "dog cat cat fish"
輸出: false

示例 3:

輸入: pattern = "aaaa", str = "dog cat cat dog"
輸出: false

示例 4:

輸入: pattern = "abba", str = "dog dog dog dog"
輸出: false

說明: 你可以假設 pattern 只包含小寫字母, str 包含了由單個空格分隔的小寫字母。    

class Solution {
    public boolean wordPattern(String pattern, String str) {
        HashMap<Character,String> map=new HashMap<Character,String>();
        String[] word=str.split(" ");//把str分成一個一個單詞
        if(pattern.length()!=word.length) return false;//單詞數不等於pattern裡字元的個數
        for(int i=0;i<pattern.length();i++){
            if(map.containsKey(pattern.charAt(i))){
                if(map.get(pattern.charAt(i)).equals(word[i])) continue;
                //pattern的第i個位置在hashmap中對應的value值與word[i]相同
                else return false;
            }
            else{
                if(map.containsValue(word[i])) return false;
                //word[i]已有key值存在。比如之前 map.put(a,cat),現在pattern的i位置是b,word[i]=dog
                map.put(pattern.charAt(i),word[i]);
            }
        }
        return true;
    }
}