码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-01-18 20:43:23      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:get   als   etc   nta   har   方法   情况   object   equal   

哈希表可以用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;
    }

 

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

标签:get   als   etc   nta   har   方法   情况   object   equal   

原文地址:https://www.cnblogs.com/stAr-1/p/8312715.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!