题目给定两个词word1和word2,计算将word1转换为word2所用的最少操作次数。您可以对一个单词执行以下三种操作:插入一个字符删除一个字符替换一个字符示例1:输入:word1="horse",word2="ros"输出:3解释:horse->rorse(put'h'replacewith'r')rorse->rose(delete'r')rose->ros(delete'e')示例2:输入:word1="intention",word2="execution"输出:5解释:intention->inention(删除't')inention->enention(将'i'替换为'e')enention->exention(将'n'替换为'x')exention->exection(将'n'替换为'c'')exection->execution(insert'u')本题解法拿到题的时候基本可以想到DP,因为感觉和我们之前的爬楼梯差不多。这个题目比较难,主要是状态转换比较复杂。定义:dpi,word1字符串的前i个字符->word1字符串的前j个字符,需要的最少步数那么有以下几种情况word1[i]==word2[j]不需要做完改变,那么dpi=dp[i-1,j-1]word1[i]!=word2[j]我们需要用到上面三个操作:add=dp[i,j-1],表示插入aCharacterdelete=dp[i-1,j],表示删除一个字符replace=dp[i-1,j-1],表示替换一个字符dpi=1+min(add,delete,replace)时间复杂度o(m*n)javaclassSolution{publicintminDistance(Stringword1,Stringword2){intm=word1.长度();intn=word2。长度();int[][]dp=newint[m+1][n+1];//basefor(inti=0;i<=m;i++){dp[i][0]=i;}for(intj=0;j<=n;j++){dp[0][j]=j;}for(inti=0;i
