Given two strings s and t, determine if they are isomorphic.
Two strings are isomorphic if the characters in s can be replaced to get t.
All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.
For example,
Given "egg", "add", return true.
Given "foo", "bar", return false.
Given "paper", "title", return true.
这道题的关键就是建立一个一一对应的关系,需要两个hashmap来完成,这里由于都是由字符构成的,因此我们可以用一个256大小的为哈希数组来代替hashmap。
public boolean isIsomorphic(String s, String t) {
int[] map1 = new int[256];
int[] map2 = new int[256];
if (s.length() != t.length()) return false;
for (int i = 0; i < s.length(); i++) {
char ss = s.charAt(i);
char tt = t.charAt(i);
if (map1[ss] == 0) {
map1[ss] = tt;
} else {
if (map1[ss] != tt) return false;
}
if (map2[tt] == 0) {
map2[tt] = ss;
} else {
if (map2[tt] != ss) return false;
}
}
return true;
}