哈希表可以用ASCII码数组来实现,可以更快
public boolean isIsomorphic(String s, String t) { /* 思路是记录下每个字符出现的位置,当有重复时,检查另外一个map是不是也是对应位置重复 */ if (s.length()!=t.length()) { return false; } Map<Character,Integer> map1 = new HashMap<>(); Map<Character,Integer> map2 = new HashMap<>(); for (int i = 0; i < s.length(); i++) { char c1 = s.charAt(i); char c2 = t.charAt(i); //有重复的情况 if (map1.containsKey(c1)) { //注意这里有个小插曲,就是map得到的包装类,所有包装类比较值 相等要用equals()方法,不能用==,这个字符串是一样的 if ((!map2.containsKey(c2))||(!Objects.equals(map2.get(c2), map1.get(c1)))) { return false; } else { map1.put(c1,i); map2.put(c2,i); } } //没有重复的情况 else { if (map2.containsKey(c2)) { return false; } map1.put(c1,i); map2.put(c2,i); } } return true; }