用 Python 编写程序检查一个字符串是否可以一对一映射到另一个字符串

pythonserver side programmingprogramming更新于 2026/1/7 3:24:17

假设我们有两个小写字符串 s 和 t,我们必须检查是否可以为 s 中的每个字母创建一个到另一个字母(可能是同一个字母)的一对一映射,以便将 s 映射到 t。(字符的顺序不会改变)。

因此,如果输入为 s = "papa", t = "lili",则输出将为 True,因为我们可以创建此映射:"p" 到 "l", "a" -> "i"

为了解决这个问题,我们将遵循以下步骤 −

  • s_dict := 一个新的映射
  • t_dict := 一个新的映射
  • 对于 i,范围从 0 到 s 大小和 t 大小的最小值,执行
    • 如果 s[i] 存在于 s_dict 中,则
      • 如果 s_dict[s[i]] 与 t[i] 不同,则
        • 返回 False
    • 否则,当 t[i] 存在于 t_dict 中时,则
      • 如果 t_dict[t[i]] 与 s[i] 不同,则
        • 返回错误
    • 否则,
      • s_dict[s[i]] := t[i]
      • t_dict[t[i]] := s[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

相关文章


有用资源