因此,如果输入类似于s="poput"t="vwput"k=9,那么输出将为True,因为在i=6时,我们可以将'p'转换为'v',而在i=8时,我们可以将“o”转换为“w”。

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

  • 如果s的大小与t的大小不同,则

  • 返回错误

  • count:=一个数组(最小值为1和(k-i+1+(k-i)/26)),用于从0到25的所有i

  • 对于来自s的每个字符c1和来自t的c2,做

  • diff:=(c2的ASCII-c1+26的ASCII)mod26

  • 如果count[diff]<=0,则

  • 计数[差异]:=计数[差异]-1

  • 返回错误

  • 如果c1与c2不同,则

  • 返回真

  • 让我们看看下面的实现来更好地理解

    示例

    def solve(s, t, k):
       if len(s) != len(t):
          return False
       count = [min(1, k - i + 1) + (k - i)//26foriinrange(26)]
       for c1, c2 in zip(s, t):
          if (c1 != c2):
             diff = (ord(c2) - ord(c1) + 26) % 26
             if count[diff] <= 0:
                return False
             count[diff] -= 1
       return True
    s = "poput"
    t = "vwput"
    k = 9
    print(solve(s, t,k))

    输入

    "poput","vwput",9
    输出结果
    True

    热门推荐

    免责声明:网站资源来源于网络,如有侵权,请及时联系删除。

    Copyright © 2024 微客导航网. All Rights Reserved.

    蜀ICP备2021004611号-4 网站地图