/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str1 string字符串
* @param str2 string字符串
* @return int整型
*/
function editDistance(str1, str2) {
// write code here
let len1 = str1.length;
let len2 = str2.length;
let dp = Array.from(Array(len1 + 1), () => new Array(len2 + 1).fill(1005));
dp[0][0] = 0;
// console.log(dp);
for (let i = 1; i <= len1; i++) {
for (let j = 1; j <= len2; j++) {
if (str1[i - 1] == str2[j - 1]) {
// 若当前两个字符相同,则取两个字符上一位的变化值即可
dp[i][j] = dp[i - 1][j - 1];
} else {
// 若当前两个字符不同,则需要找出两个字符上一位,str1前一位str2当前位,
// str1当前位str2前一位中变化最小的情况进行更新,并加上当前需要变化的1
dp[i][j] =
Math.min(
dp[i - 1][j - 1],
Math.min(dp[i - 1][j], dp[i][j - 1])
) + 1;
}
}
}
// console.log(dp);
return dp[len1][len2];
}
module.exports = {
editDistance: editDistance,
};