举例: “xy” => “xz”,只需要把 y 替换成 z,因此,最小编辑距离为 1。
“xyz” => “xy”,只需要删除 z ,请设计动态规划算法。
- 如果 a[m] === b[n],那么问题转化为求解:a[1]a[2]…a[m-1] => b[1]b[2]…b[n-1] 的最小编辑距离,因此 d[m][n] === d[m-1][n-1]。比如,“xyz” => “pqz” 的最小编辑距离等于 “xy” =>“pq” 的最小编辑距离。
- 如果 a[m] !== b[n],又分为三种情况: • 比如,“xyz” => “efg” 的最小编辑距离等于 “xy” => “efg” 的最小编辑距离 + 1(因为允许插入操作,插入一个 “z”),抽象的描述便是 d[m][n] === d[m-1][n] + 1。
• 比如,“xyz” => “efg” 的最小编辑距离等于 “xyzg” => “efg” 的最小编辑距离 +1,且因为最后一个字符都是 “g”,根据第一个判断条件,可以再等于 “xyz” => “ef” 的最小编辑距离 +1,因此,得到结论:“xyz” => “efg” 的最小编辑距离等于 “xyz” => “ef” 的最小编辑距离 +1,抽象的描述便是:d\[m\]\[n\] === d\[m\]\[n-1\] + 1。 • 比如,“xyz” => “efg” 的最小编辑距离等于"xyg" => “efg” 的最小编辑距离 + 1(因为允许替换操作,可以把 “g” 换成 “z”),再等于 “xy” => “ef”

最低0.47元/天 解锁文章
2417

被折叠的 条评论
为什么被折叠?



