他說會給我兩個字串,pattern是字母組成的,s是單字組成的,然後單字之間都用空格隔開。我們要判斷pattern跟s的關係是不是一樣。
條件:
Example:
Input: pattern = "abba", s = "dog cat cat dog"
Output: true
a對應dog。
b對應cat。
我覺得我會先把s字串拆成單字的陣列,然後因為要保證字母跟單字互相對應對方,所以會用兩個Hashmap來讓他們互相對應,一個是字母對單字,一個是單字對字。
然後再用迴圈檢查,如果有一個不是這個對應關係就回傳false,如果兩個map都跑完沒問題就回傳true。
class Solution {
public boolean wordPattern(String pattern, String s) {
//拆字串
String[] words = s.split(" ");
if (pattern.length() != words.length){
return false;
}
//建立Map
Map<Character, String> map1 = new HashMap<>();
Map<String, Character> map2 = new HashMap<>();
//比對他們的關係是不是對應的
for (int i = 0; i < pattern.length(); i++) {
char p = pattern.charAt(i);
String w = words[i];
//pattern → word
if (map1.containsKey(p)) {
if (!map1.get(p).equals(w)) {
return false;
}
} else {
map1.put(p, w);
}
//word → pattern
if (map2.containsKey(w)) {
if (map2.get(w) != p) {
return false;
}
} else {
map2.put(w, p);
}
}
return true;
}
}
執行成功
今天差一點來不及上傳...