题目:
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.
Example 1:
Input: s = "egg",
t = "add"
Output: true
Example 2:
Input: s = "foo",
t = "bar"
Output: false
Example 3:
Input: s = "paper",
t = "title"
Note:
You may assume both s and t have the same length.
public class IsomorphicString {
public boolean isIsomorphic(String s, String t) {
//init check
if(s==null || t==null) return false;
if(s.length() != t.length()) return false;
Map<Character, Character> map = new HashMap<Character, Character>();
Set<Character> set = new HashSet<Character>();
for(int i=0; i<s.length(); i++) {
char c1 = s.charAt(i);
char c2 = t.charAt(i);
if(map.containsKey(c1)) {
if(map.get(c1) != c2) return false;
} else {
if(set.contains(c2)) return false;
else {
map.put(c1, c2);
set.add(c2);
}
}
}
return true;
}
public static void main(String[] args) {
String s = "egg";
String t = "add";
System.out.println(new IsomorphicString().isIsomorphic(s, t));
}
}
public class IsomorphicString {
public boolean isIsomorphic(String s, String t) {
//init check
if(s==null || t==null) return false;
if(s.length() != t.length()) return false;
char[] charArr1 = s.toCharArray();
char[] charArr2 = t.toCharArray();
char[] show1 = new char[255];
char[] show2 = new char[255];
for (int i = 0; i < charArr1.length; i++) {
char c1 = charArr1[i];
char c2 = charArr2[i];
if (show1[c1] == 0 && show2[c2] == 0) {
show1[c1] = c2;
show2[c2] = c1;
} else {
if (show1[c1] != c2 || show2[c2] != c1) {
return false;
}
}
}
return true;
}
public static void main(String[] args) {
String s = "egg";
String t = "add";
System.out.println(new IsomorphicString().isIsomorphic(s, t));
}
}