假设我们有两个字符串p和q,还有一个数字r,我们必须检查是否可以通过最多将r个字符顺时针移位将p转换为q。因此,例如,可以使用2个顺时针移位将“ c”转换为“ 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大小的i,执行
返回False
su:= su + v + 26
su:= su + v
v:= b [i]的ASCII-a [i]的ASCII
如果v> = 0,则
除此以外,
如果su> k,则
返回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