说明:算法题目来源于lintcode,仅限于本人学习使用。请支持正版!
题目
给定两个字符串 s 和 t ,确定它们是否是同构的。 两个字符串是同构的如果 s 中的字符可以被替换得到 t。 所有出现的字符必须用另一个字符代替,同时保留字符串的顺序。
没有两个字符可以映射到同一个字符,但一个字符可以映射到自己。
可以a -> b , b-> c , 但是不能 a -> c, b-> c
你可以假定两个字符串 s 和 t 是一样长度的.
解题代码
public static boolean isIsomorphic(String s, String t) {
// write your code here
char[] sChars = s.toCharArray();
char[] tChars = t.toCharArray();
Map<Character, Character> charMap = new HashMap<Character, Character>();
for(int i = 0; i < sChars.length; i++){
if(charMap.containsKey(tChars[i])){
if(charMap.get(tChars[i]) != sChars[i]){
return false;
}
}else {
if(charMap.containsValue(sChars[i])){
return false;
}
charMap.put(tChars[i], sChars[i]);
}
}
return true;
}