动态规划:
- 建模
m+1行n+1列 二维数组 - 填写初始值,也就是边界情况
- 找到
arr[i][j],arr[i - 1][j],arr[i][j - 1],arr[i - 1][j - 1]他们的关系 - 返回题目要求的
arr[m][n]
var minDistance = function (s1, s2) {
var m = s1.length;
var n = s2.length;
if (m * n == 0) return m + n;
var arr = new Array(m + 1).fill().map(() => new Array(n + 1).fill(false));
for (var i = 0; i < m + 1; i++) {
arr[i][0] = i;
}
for (var j = 0; j < n + 1; j++) {
arr[0][j] = j;
}
for (var i = 1; i < m + 1; i++) {
for (var j = 1; j < n + 1; j++) {
var top = arr[i - 1][j] + 1;
var left = arr[i][j - 1] + 1;
var left_top = arr[i - 1][j - 1];
if (s1.charAt(i - 1) != s2.charAt(j - 1)) {
left_top += 1;
}
arr[i][j] = Math.min(top, Math.min(left, left_top));
}
}
return arr[m][n];
};
调试代码
console.log(minDistance("horse", "ros"));