假设我们有两个字符串S和T,它们是彼此置换。假设有一个操作,其中我们删除了S中的第一个或最后一个字符,并将其插入字符串中的任何位置。然后找到将S转换为T所需的最少操作数。
因此,如果输入类似于s =“ zyvxw” t =“ vwxyz”,则输出将为3,因为这些操作是:删除“ w”并将其插入“ v”之后以获取“ zyvwx”删除“ z”并将其插入“ x”后得到“ yvwxz”删除“ y”并将其插入“ x”后得到“ vwxyz”。
为了解决这个问题,我们将遵循以下步骤-
ans:= s的大小,n:= s的大小
对于范围在0到n-1之间的i
对于k到k到t大小的范围,做
k:= k + 1
ans:= ans和n的最小值-(j-i + 1)
从循环中出来
如果s [j]与t [k]相同,则
k:= 0
对于范围i至n-1的j,执行
返回ans
让我们看下面的实现以更好地理解-
class Solution: def solve(self, s, t): ans = n = len(s) for i in range(n): k = 0 for j in range(i, n): for k in range(k, len(t)): if s[j] == t[k]: ans = min(ans, n - (j - i + 1)) break k += 1 return ans ob = Solution()s = "zyvxw" t = "vwxyz" print(ob.solve(s, t))
"zyvxw", "vwxyz"
输出结果
5