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; }