程序检查一个字符串是否可以一对一映射到Python中的另一个字符串

假设我们有两个小写的字符串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
    猜你喜欢