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.
这道题需要注意的地方就是,两个不同的字符不能映射到同一个字符上,刚开始没有注意到这一点,失败了。还有就是,map.containsValue()方法的使用,刚开始忘记了还有这个方法,使用了两个map,明显做麻烦了。AP代码如下:
public boolean isIsomorphic(String s, String t) {
if(s==null||s.length()==0)
return true;
HashMap<Character, Character> mapS=new HashMap<Character, Character>();
for(int i=0;i<s.length();i++){
char sChar=s.charAt(i);
char tChar=t.charAt(i);
if(mapS.containsKey(sChar)&&mapS.get(sChar)==tChar)
continue;
if((!mapS.containsKey(sChar))&&(!mapS.containsValue(tChar))){
mapS.put(sChar, tChar);
}else {
return false;
}
}
return true;
}