描述
给定两个单词word1和word2,找到将word1转换为word2所需的最小操作数。
您对单词允许以下3个操作:
插入一个字符
删除一个字符
替换一个字符
样例
样例1
1 | 输入: word1 = "horse", word2 = "ros" |
样例2
1 | 输入: word1 = "intention", word2 = "execution" |
思路
动态规划,dp[i][j]
代表长度为为 i word1 到长度为 j 的 words2 需要变换的最少次数。
当 words[i] == word2[j]
: 显然 dp[i][j] = dp[i-1][j-1]
否则需要变换,
1 | dp[i][j] = min( |
要好好理解一下,dp[i][j] = 1
代表 经过一次变换形成了 words2.substr(0,j)
,我们可以认为这个字符串就是当前的形成的状态。
真费劲。
代码
1 | class Solution { |