290. Word Pattern
同 205. Isomorphic Strings
Two Maps
class Solution {
public boolean wordPattern(String pattern, String str) {
Map<Character, String> cMap = new HashMap<>();
Map<String, Character> sMap = new HashMap<>();
String[] words = str.split(" ");
if (pattern.length() != words.length) {
return false;
}
int len = pattern.length();
for (int i = 0; i < len; i++) {
if (cMap.containsKey(pattern.charAt(i))) {
if (!cMap.get(pattern.charAt(i)).equals(words[i])) {
return false;
}
} else {
cMap.put(pattern.charAt(i), words[i]);
}
if (sMap.containsKey(words[i])) {
if (sMap.get(words[i]) != pattern.charAt(i)) {
return false;
}
} else {
sMap.put(words[i], pattern.charAt(i));
}
}
return true;
}
}
One Map (Optimized Space)
class Solution {
public boolean wordPattern(String pattern, String str) {
Map<Character, String> cMap = new HashMap<>();
String[] words = str.split(" ");
if (pattern.length() != words.length) {
return false;
}
int len = pattern.length();
for (int i = 0; i < len; i++) {
if (cMap.containsKey(pattern.charAt(i))) {
if (!cMap.get(pattern.charAt(i)).equals(words[i])) {
return false;
}
} else {
if (cMap.containsValue(words[i])) {
return false;
}
cMap.put(pattern.charAt(i), words[i]);
}
}
return true;
}
}