72. 编辑距离

51 阅读1分钟

题目:

image.png

链接:leetcode.cn/problems/ed…

解题思路:【动态规划】

0e5ecd880972d3e82bb5a943eaed648.jpg

代码:

/**
 * @param {string} word1
 * @param {string} word2
 * @return {number}
 */
var minDistance = function(word1, word2) {
    if(word1.length === 0) return word2.length
    if(word2.length === 0) return word1.length
    let m = word1.length
    let n = word2.length
    let dp = Array.from(new Array(m+1), () => new Array(n+1))
    for(let i=0; i< m+1; i++){
        dp[i][0] = i
    }
    for(let j=0; j< n+1; j++){
        dp[0][j] = j
    }
    
    for(let i=1; i< m+1; i++){
        for(let j=1; j< n+1; j++){
            if(word1[i-1] === word2[j-1]){
                dp[i][j] = dp[i-1][j-1]
            }else{
                 dp[i][j] = Math.min(dp[i][j-1]+1, dp[i-1][j]+1, dp[i-1][j-1]+1)
            }
        }
    }
    return dp[m][n]

};