【leetcode】205. 同构字符串

205. 同构字符串


先判断这两个字符串长度是否相同,如果不相同,那么肯定不是同构字符串
如果长度相同,再继续判断两个字符串是不是完全相等,这是一个小优化(判断相等O(n) < O(nlogn))
使用两个map容器分别存储两个字符串的值,遍历两个容器,如果两个字符都是第一次插入,那么返回值均为NULL
如果是同构,那么返回的是上次插入相同值的位置,这个位置应该要一样 
这是一种很巧妙的方法,利用的map容器的特性:插入不存在的值,返回空,插入已存在的值,返回被覆盖的那个VALUE值,这里返回的就是数值位置

时间复杂度:O(nlogn) 
空间复杂度:O(n)

class Solution {
    public boolean isIsomorphic(String s, String t) {
        if(s.length() != t.length())
            return false;
        if(s.equals(t))
            return true;
        Map index_s = new HashMap();
        Map index_t = new HashMap();
        for(Integer i = 0; i < s.length(); i++){
            if(index_s.put(s.charAt(i), i) != index_t.put(t.charAt(i), i))
                return false;
        }
        return true;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_28038873/article/details/81031606