假设我们有两个小写的字符串s,而t必须检查是否可以为s中的每个字母创建一个一对一映射到另一个字母(可能是相同的字母),以便s可以映射到t。(字符的顺序不会改变)。
因此,如果输入就像s =“ papa”,t =“ lili”,那么输出将为True,因为我们可以创建以下映射:“ p”到“ l”,“ a”->“ i”
为了解决这个问题,我们将遵循以下步骤-
s_dict:=新映射
t_dict:=新映射
对于范围在0到s大小和t大小最小值之间的i,执行
s_dict [s [i]]:= t [i]
t_dict [t [i]]:= s [i]
如果t_dict [t [i]]与s [i]不同,则
返回False
如果s_dict [s [i]]与t [i]不同,则
返回False
如果s_dict中存在s [i],则
否则,当t_dict中存在t [i]时,则
除此以外,
返回True
让我们看下面的实现以更好地理解-
class Solution: def solve(self, s, t): s_dict = {} t_dict = {} for i in range(min(len(s), len(t))): if s[i] in s_dict: if s_dict[s[i]] != t[i]: return False elif t[i] in t_dict: if t_dict[t[i]] != s[i]: return False else: s_dict[s[i]] = t[i] t_dict[t[i]] = s[i] return True ob = Solution()print(ob.solve("papa", "lili"))
"papa", "lili"
输出结果
True