[Leetcode] 290. 單詞模式 java hashmap
阿新 • • 發佈:2018-12-17
給定一種 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; } }