题解 | #75.编辑距离(一)#
编辑距离(一)
http://www.nowcoder.com/practice/6a1483b5be1547b1acd7940f867be0da
看了题解原来这道题这么简单😱
下面我就要抄题解了
表示为从的前位变化为的前位需要的次数
dp[i-1][j-1]
对应于修改一个字符
dp[i][j-1]
对应于删除一个字符
dp[i-1][j]
对应于插入一个字符
function editDistance( str1 , str2 ) {
let dp = new Array(str1.length+1);
for(let i=0; i<dp.length; i++)
dp[i] = new Array(str2.length+1);
//初始化dp
dp[0][0] = 0;
for(let i=1; i<dp.length; i++)
dp[i][0] = dp[i-1][0] + 1;
for(let i=1; i<dp[0].length; i++)
dp[0][i] = dp[0][i-1] + 1;
for(let i=1; i<dp.length; i++){
for(let j=1; j<dp[0].length; j++){
if(str1[i-1] == str2[j-1])
dp[i][j] = dp[i-1][j-1];
else
dp[i][j] = Math.min(dp[i-1][j-1], dp[i][j-1], dp[i-1][j]) +1;
}
}
return dp[str1.length][str2.length];
}
module.exports = {
editDistance : editDistance
};