LeetCode 72. Edit Distance

Posted 約束の空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 72. Edit Distance相关的知识,希望对你有一定的参考价值。

典型DP题,思路上和 LCS 很像。

dp[i][j] 表示word1前i个 word2前j个 所需的最小操作数。

base case: dp[i][0]=i, dp[0][j]=j. 需要额外注意这里的base case。

dp[i][j] = dp[i-1][j-1]  if word1[i-1]==word2[j-1]

     min{ dp[i-1][j-1], dp[i-1][j], dp[i][j-1] } + 1  o/w

不相等的时候 dp[i-1][j-1]+1 表示把不相等的replace一下,dp[i-1][j]+1 表示把word1减少一个字符,dp[i][j-1]+1 表示把word2减少一个字符。(增加一个字符和减少一个字符是等价的)

class Solution {
public:
    int minDistance(string word1, string word2) {
        vector<vector<int>> dp(word1.size()+1,vector<int>(word2.size()+1,0));
        for (int i=1;i<=word1.size();++i) dp[i][0]=i;
        for (int j=1;j<=word2.size();++j) dp[0][j]=j;        
        
        for (int i=1;i<=word1.size();++i){
            for (int j=1;j<=word2.size();++j){
                if (word1[i-1]==word2[j-1])
                    dp[i][j] = dp[i-1][j-1];
                else
                    dp[i][j] = min(dp[i-1][j-1], min(dp[i-1][j], dp[i][j-1])) + 1;
            }
        }
        return dp[word1.size()][word2.size()];
    }
};

 

以上是关于LeetCode 72. Edit Distance的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode-72.Edit Distance

LeetCode-72-Edit Distance

LeetCode72 Edit Distance

leetcode72. Edit Distance

[leetcode72]Edit Distance

Leetcode 72: Edit Distance