72. 编辑距离
给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。
你可以对一个单词进行如下三种操作:
插入一个字符
删除一个字符
替换一个字符
##示例 1:
1 | 输入: word1 = "horse", word2 = "ros" |
##示例 2:
1 | 输入: word1 = "intention", word2 = "execution" |
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/edit-distance
Solution
dp[i][j]
代表 word1[i]
到 word2[j]
的最小变换
word1[i] == word2[j]
i
和j
同时向前移动一位 即dp[i][j] == dp[i-1][j-1]
word1[i]
word2[j]
此时有三种方案- 替换 即令
word1[i] = word2[j]
,有dp[i][j] == dp[i-1][j-1] + 1
- 删除,即删掉元素
word1[i]
,此时有dp[i][j] == dp[i-1][j] + 1
- 插入,即在
word1 i
处插入 元素word2[j]
,此时有dp[i][j] == dp[i][j-1] + 1
- 取以上三者最小值即可
dp[i][j] = min{dp[i-1][j-1] ,dp[i-1][j] ,dp[i][j-1] }+1
- 替换 即令
Code
1 | class Solution { |
- 本文标题:72. 编辑距离
- 本文作者:codeflysafe
- 创建时间:2020-03-19 09:45:31
- 本文链接:https://codeflysafe.github.io/2020/03/19/2020-03-19-72.-编辑距离/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
评论