题目:
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.
Note:
You may assume both s and t have the same length.
Java version
public class Solution {
public boolean isIsomorphic(String s, String t) {
HashMap<Character, Character> hashmap = new HashMap<Character,Character>();
HashMap<Character, Character> hashmap2 = new HashMap<Character,Character>();
char[] slist = s.toCharArray();
char[] tlist = t.toCharArray();
for(int i = 0; i< s.length(); i++)
{
if(hashmap.get(slist[i]) == null)
{
if(hashmap2.get(tlist[i]) != null)
return false;
hashmap.put(slist[i],tlist[i]);
hashmap2.put(tlist[i],slist[i]);
}
else if(hashmap.get(slist[i]) != tlist[i])
{
return false;
}else
{
//doing nothing when equals
}
}
return true;
}
}
笨办法,有待改进, 需要注意情况ab aa应该返回false,所以需要第二个hashmap,用来反向检查