Python程序:检查一个字符串是否可以通过顺时针移位字符转换为另一个字符串


假设我们有两个字符串 p 和 q,还有一个数字 r,我们需要检查 p 是否可以通过最多 r 次顺时针移位字符转换为 q。例如,“c”可以通过 2 次顺时针移位转换为“e”。

因此,如果输入类似于 p = "abc",q = "ccc",r = 3,则输出将为 True,因为我们可以通过使用 2 次顺时针移位将“a”转换为“c”,然后通过使用 1 次顺时针移位将“b”转换为“c”,总共 3 次移位。

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

  • 如果 a 的大小与 b 的大小不同,则
    • 返回 False
  • 如果 k 等于 0 且 a 不等于 b,则
    • 返回 False
  • su:= 0
  • 对于范围从 0 到 a 的大小,执行以下操作:
    • v := b[i] 的 ASCII 值 - a[i] 的 ASCII 值
    • 如果 v>=0,则
      • su := su + v
    • 否则,
      • su := su + v + 26
    • 如果 su > k,则
      • 返回 False
  • 返回 True

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

示例

 在线演示

class Solution:
   def solve(self, a, b, k):
      if len(a) != len(b):
         return False
      if k == 0 and a != b:
         return False
         su=0
         for i in range(len(a)):
            v = ord(b[i])- ord(a[i])
            if v>=0:
               su+=v
            else:
               su+=v+26
            if su>k:
               return False
         return True
ob = Solution()
print(ob.solve("abc", "ccc", 3))

输入

"abc", "ccc", 3

输出

True

更新于: 2020年10月5日

361 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告