用 Python 编写一个程序,通过从第一个或最后一个字符中删除并再次插入来制作目标
programmingpythonserver side programming
假设我们有两个字符串 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 := 0
对于范围在 i 到 n-1 内的 j,执行
对于范围在 k 到 t 的大小内的 k,执行
如果 s[j] 与 t[k] 相同,则
ans := ans 和 n - (j - i + 1) 中的最小值
退出循环
k := k + 1
返回 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