描述
该题来自于力扣第72题
分析
典型的动态规划题,用dp[i][j]
表示word1[:i]
与word2[:j]
的最小编辑距离,可知i=0
或j=0
表示其中一个是空串,而任意字符串与空串word
之间的编辑距离肯定是word
的长度,从而dp[0][j]=j, dp[i][0]=i
,而对于i>0,j>0
,可以直到dp[i][j]
必然是一下三种情况的最小值:
1. dp[i][j-1]+1
2. dp[i-1][j]+1
3. dp[i-1][j-1]+neq(word1[i-1], word2[j-1])
其中neq(a, b)
表示当a
等于b
时取0
,或者取1
;按照上面的方式就已经可以写代码了,但是其实可以再简化一个转移方程为:
\[
dp[i][j] = \left
\{ \begin{aligned}
& dp[i-1][j-1] &
\text{word1}[i-1]=\text{word1}[j-1] \\
& \min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1
& others
\end{aligned}
\right.
\]
代码
python
1 | class Solution: |