(text1, text2, p1, p2, memo)
| 21 | .map(() => new Array((text2.length + 1)).fill(null)); /* Time O(M) | Space O(M) */ |
| 22 | |
| 23 | var dfs = (text1, text2, p1, p2, memo) => { |
| 24 | const left = longestCommonSubsequence(text1, text2, (p1 + 1), p2, memo); /* Time O(N * M) | Space O(HEIGHT) */ |
| 25 | |
| 26 | const index = text2.indexOf(text1[p1], p2); /* Time O(M) */ |
| 27 | const isPrefix = (index !== -1); |
| 28 | |
| 29 | const right = isPrefix |
| 30 | ? (longestCommonSubsequence(text1, text2, (p1 + 1), (index + 1), memo) + 1)/* Time O(N * M) | Space O(HEIGHT) */ |
| 31 | : 0; |
| 32 | |
| 33 | memo[p1][p2] = Math.max(left, right); /* | Space O(N * M) */ |
| 34 | return memo[p1][p2]; |
| 35 | } |
| 36 | |
| 37 | /** |
| 38 | * DP - Top Down |
no test coverage detected