205. Isomorphic Strings
题目
我的代码(效率中等偏快)
先判断他们的元素种类个数是否相同,如果相同,继续比较。将遇到的s中的字符,添加t中字符作为字典进行比对,如果后面比对成功,那么是正确的。
class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
if len(s) != len (t):
return False
if len(set(s))!=len(set(t)):
return False
strdict={}
for i in range(len(s)):
if s[i] not in strdict:
strdict[s[i]]=t[i]
elif strdict[s[i]]!=t[i] :
return False
return True
高效代码(使用了翻译表)
class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
s_table = self.RemoveDuplicate(s);
t_table = self.RemoveDuplicate(t);
if len(s_table) == len(t_table):
transtab = str.maketrans(s_table, t_table); #创建一个翻译表
return s.translate(transtab) == t #翻译转换
else:
return False
# 将字符串去除重复/重新排序
def RemoveDuplicate(self, s):
s_set = set(s);
result = list(s_set);
result.sort(key=s.index);
result = ''.join(result);
return result