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