给定两个字符串 s 和 t ,判断它们是否是同构的。
如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
解法一:
class Solution {
public boolean isIsomorphic(String s, String t) {
for(int i = 0; i < s.length(); i++){
if(s.indexOf(s.charAt(i)) != t.indexOf(t.charAt(i))){
return false;
}
}
return true;
}
}
使用到了String 的 indexOf() 方法,来进行比较
解法二:
public static boolean isIsomorphic(String s, String t) {
Map<Character, Character> m1 = new HashMap<>();
Map<Character, Character> m2 = new HashMap<>();
int sum = s.length();
for (int i = 0; i < sum; i++) {
char x = s.charAt(i);
char y = t.charAt(i);
if ((m1.containsKey(x) && m2.get(x) != y) || (m2.containsKey(y) && m2.get(y) != x)) {
return false;
}
m1.put(x, y);
m2.put(y, x);
}
return true;
}
使用Map集合的映射关系。