72. Edit Distance

https://leetcode.com/problems/edit-distance/

经典中的经典

dp[i[[j] how to covert word1[:i] to word2[:j]

if word1[i] != word2[j]:

(1) delete word1[i-1] and then word1[:i-1] to word2[:j] and

(2) word1[:i] to word2[:j-1] and insertion on word2[j-1]

(3) word1[:i-1] to word2[:j-1] and replace word1[i-1] with word2[j-1]

class Solution:
    def minDistance(self, word1: str, word2: str) -> int:
        m = len(word1)
        n = len(word2)
        dp=[[0]*(n+1) for _ in range(m+1)]
        for i in range(m+1):
            dp[i][0] = i
        for j in range(n+1):
            dp[0][j] = j
        for i in range(1,m+1):
            for j in range(1,n+1):
                if word1[i-1] == word2[j-1]:
                    dp[i][j] = dp[i-1][j-1]
                else:
                    dp[i][j] = min([dp[i-1][j],dp[i][j-1],dp[i-1][j-1]])+1
        return dp[m][n]
        

Last updated

Was this helpful?