- 解决两个字符串的动态规划问题,一般都是用两个指针
i,j
分别指向两个字符串的最后,然后一步步往前走,缩小问题的规模。 - base case 是
i
走完s1或j
走完s2,可以直接返回另一个字符串剩下的长度。 - 对于每对字符s1[i]和s2[j],可以有四种操作:
这个「三选一」到底该怎么选择呢?很简单,全试一遍,哪个操作最后得到的编辑距离最小,就选谁。这里需要递归技巧,理解需要点技巧,先看下代码:递归版本
def dp(i, j) -> int
返回 s1[0..i] 和 s2[0..j] 的最小编辑距离
if s1