leetcode 205. 同构字符串 index与哈希(hash)

Example1:

输入: s = “egg”, t = “add”
输出: true

Example2:

输入: s = “foo”, t = “bar”
输出: false

Example3:

输入: s = “paper”, t = “title”
输出: true

题目中默认s和t的长度相等
则无需先判断s,t长度是否相等

一、index简单遍历
首先是最简单的index函数方法,
当字符重复时index默认返回首先找到的值
若s中重复但t中不重复
在遍历重复的值时:
对于重复的值s都会返回重复的第一位的索引
但t中不重复则返回的索引值不同

class Solution:
    def isIsomorphic(self, s: str, t: str) -> bool:
        for i in range(0, len(s)):
            if s.index(s[i]) != t.index(t[i]):
                return False
        return True 

二、哈希表
使用哈希表固然编写麻烦,但可以大幅减小时间复杂度,提升运行效率
首先以s中的字符为键,映射至t中字符为值
由于s中字符必须完全被替换
所以添加判断s中的字符映射t中的字符时不能相同
最后判断哈希表中s的映射值是否和t中相对应的值相同(是否唯一)
若s对应的映射不同(不唯一),则返回False

class Solution:
    def isIsomorphic(self, s: str, t: str) -> bool:
        hash_map = {
    
    }

        for i in range(len(s)):

            if s[i] not in hash_map:
                if t[i] in hash_map.values():
                    return False
                else:
                    hash_map[s[i]] = t[i]
                    
            else:
                if hash_map[s[i]] != t[i]:
                    return False
        return True

猜你喜欢

转载自blog.csdn.net/weixin_50791900/article/details/111771821