题目
给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。
你可以对一个单词进行如下三种操作:
示例 1:
示例 2:
题解
这个题目拿到题目基本就能想到DP,因为感觉和我们之前的爬楼梯啥的比较相似。这个题目比较为hard主要是,状态转换比较复杂。
定义: dp[i][j] , word1这个字符串的前i个 -> word1这个字符串的前j 个字符,所需要的最小的步数
那么有以下几种情况
word1[i] == word2[j]
不需要做变化,那么 dp[i][j] = dp[i-1,j-1]
word1[i] != word2[j]
我们就需要动用上面那三种操作了:
add = dp[i, j-1], 代表插入一个字符
delete = dp[i-1, j],代表删除一个字符
replace = dp[i-1, j-1],代表替换一个字符
dp[i][j] = 1 + min(add, delete, replace)
时间复杂度 o(m * n)
java
python
领取专属 10元无门槛券
私享最新 技术干货