leetcode 72 编辑距离
题目:
对于这道题目,我们可以使用dp来解决,我们定义dp[i][j]表示将word1中的前 i 个字符到word2的前 j 个字符的最短距离,
然后我们可以得到dp的方程式,当word1的第i个字符等于word2的第 j 个字符时,对于word1来说存在两种操作,即插入和删除,
此时的方程式如下:
当当word1的第i个字符不等于word2的第 j 个字符时,此时对于word1来说存在三种操作,即插入、删除和替换
此时方程式如下:
class Solution { public: int minDistance(string word1, string word2) { int l1=word1.size(); int l2=word2.size(); vector<vector<int>> dp(l1+1,vector<int>(l2+1,0)); for(int i=1;i<=l1;i++) { dp[i][0]=i; } for(int j=1;j<=l2;j++) { dp[0][j]=j; } for(int i=1;i<=l1;i++) { for(int j=1;j<=l2;j++) { if(word1[i-1]==word2[j-1]) { dp[i][j]=min(min(dp[i-1][j],dp[i][j-1])+1,dp[i-1][j-1]); } else { dp[i][j]=min(min(dp[i-1][j],dp[i][j-1])+1,dp[i-1][j-1]+1); } } } return dp[l1][l2]; } };
posted on 2020-03-10 22:05 QingFengDaHui 阅读(232) 评论(0) 编辑 收藏 举报