使用Python检查一次字符串交换是否可以使字符串相等的程序

假设我们有两个长度相同的字符串 s 和 t。考虑一个操作,我们在一个字符串中选择两个索引(不一定不同)并交换所选索引处的字符。我们必须检查是否可以通过对其中一个字符串执行最多一次字符串交换来使两个字符串相同。

因此,如果输入类似于 s = "hello" t = "hlelo",那么输出将为 True,因为我们需要在 s 或 t 处交换 'e' 和 'l' 以使它们相等。

为了解决这个问题,我们将按照以下步骤操作 -

  • 最大差异:= 2

  • 差异:= 0

  • st := 一组新的

  • st2 := 一组新的

  • 对于范围 0 到 s 大小的 i,请执行

    • 返回错误

    • 将 t[i] 插入 st2

    • 将 s[i] 插入 st

    • 差异 := 差异 + 1

    • 如果 s[i] 与 t[i] 不同,则

    • 如果 s[i] 不存在于 st 中,则

    • 如果 t[i] 不存在于 st2 中,则

    • 如果 diffs > max_diffs,则

    • 如果(diffs 与 0 相同或 diffs 与 2 相同)并且 st 的大小与 st2 的大小相同且 st 与 st2 的大小相同,则返回 true,否则为 false

    让我们看看以下实现以获得更好的理解 -

    示例

    def solve(s, t):

       max_diffs=2

       diffs=0

       st = set()

       st2 = set()

       for i in range(len(s)):

          if s[i] != t[i]:

             diffs+=1

          if s[i] not in st:

             st.add(s[i])

          if t[i] not in st2:

             st2.add(t[i])

          if diffs > max_diffs:

             return False

       return (diffs == 0 or diffs == 2) and len(st) == len(st2) and st == st2

    s = "hello"

    t = "hlelo"

    print(solve(s, t))

    输入

    "hello", "hlelo"
    输出结果
    True

    以上是 使用Python检查一次字符串交换是否可以使字符串相等的程序 的全部内容, 来源链接: utcz.com/z/341395.html

    回到顶部