LeetCode-單詞規律

YuanbaoQiang發表於2020-12-16

題目要求

原題連結290. 單詞規律

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

解題過程

雜湊表

class Solution {
    public boolean wordPattern(String pattern, String s) {
        char[] chArr = pattern.toCharArray();
        Map<Character,String> map = new HashMap<>();
        String[] sArr = s.split(" ");
        if(chArr .length != sArr.length) return false;
        for(int i = 0; i < chArr.length; i++){
            // key存在的情況
            if(map.containsKey(chArr[i])){
                if(!map.get(chArr[i]).equals(sArr[i])) return false;
            }else{
                // 此時key不存在
                // 如果兩個value的值相同,則false
                if(map.containsValue(sArr[i])) return false;
                map.put(chArr[i], sArr[i]);
            }
        }
        return true;                          
    }
}

相關文章