【LeetCode】290.單詞規律(雙映射)

題目鏈接

290. 單詞規律

題目描述

解題思路

雙哈希表

需要處理兩個映射關係:pattern -> str,以及str -> pattern

如果只考慮pattern -> str的映射關係,則pattern = "abba"str = "dog dog dog dog"示例不通過。所以必須也得考慮str -> pattern的映射關係,雙映射,雙哈希。

AC代碼

class Solution {
    public boolean wordPattern(String pattern, String s) {
        String sBuff[] = s.split(" ");
        Map<Character,String> p2s = new HashMap<>();
        Map<String,Character> s2p = new HashMap<>();
        if(pattern.length() != sBuff.length) return false;
        boolean flag1 = true;
        boolean flag2 = true;
        for(int i = 0; i < pattern.length(); i++){
            if(p2s.containsKey(pattern.charAt(i))){
                if(p2s.get(pattern.charAt(i)).equals(sBuff[i])==false){
                    flag1 = false;
                }
            }
            else p2s.put(pattern.charAt(i),sBuff[i]);
        }
        for(int i = 0; i < pattern.length(); i++){
            if(s2p.containsKey(sBuff[i])){
                if(s2p.get(sBuff[i]).equals(pattern.charAt(i))==false){
                    flag1 = false;
                }
            }
            else s2p.put(sBuff[i],pattern.charAt(i));
        }
        if(flag1 && flag2) return true;
        else return false;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章