205. Isomorphic Strings

竟然这样ac了,我只是试了一下。。。想法就是对于每一个字符串都建立一个哈希表,统计他们各个字母的数量,对于相同位置上的字母,两个字符串对于字母数量是一样的,但这样还可能出现abab 和 aabb这种情况,因此还要加上一条判断相邻位置上字母是否相等:

class Solution(object):
    def isIsomorphic(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        if len(t) != len(s):
            return False
        dic1 = {}
        dic2 = {}
        i = 0
        while i < len(s):
            if s[i] not in dic1:
                dic1[s[i]] = 1
            else:
                dic1[s[i]] += 1
            if t[i] not in dic2:
                dic2[t[i]] = 1
            else:
                dic2[t[i]] += 1
            i += 1
        
        for i in range(len(s)):
            if dic1[s[i]] != dic2[t[i]]:
                return False
            if i > 0 and s[i] == s[i-1] and t[i] != t[i-1]:
                return False
            if i > 0 and s[i] != s[i-1] and t[i] == t[i-1]:
                return False
        return True

网上提供的做法有很多种,其中一种是建立一个s到t映射的哈希表,最后考虑去重:

class Solution(object):
    def isIsomorphic(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        if len(t) != len(s):
            return False
        dic = {}
        for i in range(len(s)):
            if s[i] not in dic:
                dic[s[i]] = t[i]
            else:
                if dic[s[i]] != t[i]:
                    return False
        m = [dic[k] for k in dic]
        return len(m) == len(set(m))
                
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容