[leetcode]205. Isomorphic Strings同构字符串

哈希表可以用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;
    }
原文地址:https://www.cnblogs.com/stAr-1/p/8312715.html