1 /**
2 * @param {string} word1
3 * @param {string} word2
4 * @return {number}
5 */
6 var minDistance = function (word1, word2) {
7 const len1 = word1.length;
8 const len2 = word2.length;
9 const matrix = Array.from(Array(len1 + 1), () => new Array(len2 + 1));
10 for (let i = 0; i <= len1; i++) {
11 matrix[i][0] = i;
12 }
13 for (let j = 1; j <= len2; j++) {
14 matrix[0][j] = j;
15 }
16 for (let i = 1; i <= len1; i++) {
17 for (let j = 1; j <= len2; j++) {
18 if (word1[i - 1] === word2[j - 1]) {
19 matrix[i][j] = matrix[i - 1][j - 1];
20 } else {
21 matrix[i][j] = Math.min(matrix[i - 1][j - 1], matrix[i][j - 1], matrix[i - 1][j]) + 1;
22 }
23 }
24 }
25 return matrix[len1][len2];
26 };