290. Word Pattern

1、題目數組

  一、審題spa

  

  二、分析3d

    給出兩個字符串,判斷兩個字符串的元素排列規則是否是同樣。code

 

2、解答blog

  一、思路字符串

   方法1、get

    採用 Map<Character, String>it

    將 pattern 的字符做爲 Key,str 切分紅單詞數組 arr,單詞做爲 Value。class

    若 pattern中字符數與 str 單詞數不相等,則返回 false;map

    若相等,在依次在 Map 中進行判斷。

    public boolean wordPattern(String pattern, String str) {
        String[] arr = str.split(" ");
        if(arr.length != pattern.length())
            return false;
        HashMap<Character, String> map = new HashMap<>();
        for (int i = 0; i < arr.length; i++) {
            char c = pattern.charAt(i);
            if(map.containsKey(c)) {
                if(!map.get(c).equals(arr[i]))
                    return false;
            }
            else {
                if(map.containsValue(arr[i]))
                    return false;
                map.put(c, arr[i]);
            }
        }
        return true;
    }
    

 

  方法2、

    採用 Map<Object, Integer>

    若 pattern 與 str 排列規則同樣,則下標同樣時, pattern 中的字符做爲 key 下標做爲 value, 與 str 中單詞做爲 key 下標做爲 value 放入 Map 時,結果應當是同樣的。

    若結果不一致,說明排列規則不同。

    public boolean wordPattern2(String pattern, String str) {
        String[] words = str.split(" ");
        if(words.length != pattern.length())
            return false;
        HashMap<Object, Integer> map = new HashMap<>();
        for(Integer i = 0; i < words.length; i++)
            if(map.put(pattern.charAt(i), i) != map.put(words[i], i))
                return false;
        return true;
    }
相關文章
相關標籤/搜索