diff --git a/09_dynamic_programming/javascript/examples/base.js b/09_dynamic_programming/javascript/examples/base.js new file mode 100644 index 0000000..ae44163 --- /dev/null +++ b/09_dynamic_programming/javascript/examples/base.js @@ -0,0 +1,7 @@ +export default function initialize_matrix(rows, cols){ + let matrix = []; + for (let i = 0; i < rows.length; i++){ + matrix.push(Array(cols.length).fill(0)); + } + return matrix; +} \ No newline at end of file diff --git a/09_dynamic_programming/javascript/examples/diff_two_words.js b/09_dynamic_programming/javascript/examples/diff_two_words.js new file mode 100644 index 0000000..8911423 --- /dev/null +++ b/09_dynamic_programming/javascript/examples/diff_two_words.js @@ -0,0 +1,25 @@ +import initialize_matrix as base from "./base.js"; + +export default function diff( firstWord, secondWord ){ + let arr1 = firstWord.split(''); + let arr2 = secondWord.split(''); + let matrix = initialize_matrix(arr1, arr2); + for (let i = 0; i < arr1.length; i++){ + for (let j = 0; j < arr2.length; j++){ + if( arr1[i] == arr2[j] ){ + if( i > 0 && j > 0){ + matrix[i][j] = matrix[i - 1][j - 1] + 1; + }else{ + matrix[i][j] = 1; + } + } else { + if( i > 0 && j > 0){ + matrix[i][j] = Math.max(matrix[i - 1][j], matrix[i][j - 1]); + }else{ + matrix[i][j] = 0; + } + } + } + } + return matrix[arr1.length-1][arr2.length-1]; +} \ No newline at end of file