这道题和word pattern几乎一样,但自己还是在做出了一次大的错误后,才意识到将set改成map来做,我们能不能从中理解到奥义了!!!
public boolean isIsomorphic(String s, String t) {
if (s == null) {
return true;
}
Map<Character, Integer> setS = new HashMap<>();
Map<Character, Integer> setT = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
if (setS.containsKey(s.charAt(i))) {
if (setT.containsKey(t.charAt(i))) {
if (setS.get(s.charAt(i)).equals(setT.get(t.charAt(i)))) {
continue;
} else {
return false;
}
} else {
return false;
}
} else {
if (setT.containsKey(t.charAt(i))) {
return false;
} else {
setS.put(s.charAt(i), i);
setT.put(t.charAt(i), i);
}
}
}
return true;
// Set<Character> setS = new HashSet<>();
// Set<Character> setT = new HashSet<>();
// for (int i = 0; i < s.length(); i++) {
// if (setS.contains(s.charAt(i))) {
// if (setT.contains(t.charAt(i))) {
// continue;
// } else {
// return false;
// }
// } else {
// if (setT.contains(t.charAt(i))) {
// return false;
// } else {
// setS.add(s.charAt(i));
// setT.add(t.charAt(i));
// }
// }
// }
// return true;
}