72. Edit Distance

Description

Given two wordsword1andword2, find the minimum number of steps required to convertword1toword2. (each operation is counted as 1 step.)

You have the following 3 operations permitted on a word:

a) Insert a character
b) Delete a character
c) Replace a character

Discuss

Method

dp 匹配

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 = 0; i <= word1.size(); ++i) {
            dp[i][0] = i;
        }

        for(int i = 0; i <= word2.size(); ++i) {
            dp[0][i] = i;
        }

        for(int yLoop = 1; yLoop <= word1.size(); ++yLoop) {
            for(int xLoop = 1; xLoop <= word2.size(); ++xLoop) {
                /*
                dp[yLoop][xLoop] = min(dp[yLoop - 1][xLoop - 1], min(dp[yLoop][xLoop - 1], dp[yLoop - 1][xLoop]));
                if(word1[yLoop-1] != word2[xLoop-1]) {
                    ++dp[yLoop][xLoop];
                }
                */
                if(word1[yLoop-1] != word2[xLoop-1]) {
                    dp[yLoop][xLoop] = min(dp[yLoop - 1][xLoop - 1], min(dp[yLoop][xLoop - 1], dp[yLoop - 1][xLoop])) + 1;
                }
                else {
                    dp[yLoop][xLoop] = dp[yLoop - 1][xLoop - 1];
                }
            }
        }

        return dp[word1.size()][word2.size()];
    }
};

results matching ""

    No results matching ""