-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy path1143-longest-common-subsequence.js
37 lines (34 loc) · 1.14 KB
/
1143-longest-common-subsequence.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
* 1143. Longest Common Subsequence
* https://leetcode.com/problems/longest-common-subsequence/
* Difficulty: Medium
*
* Given two strings text1 and text2, return the length of their longest common subsequence.
* If there is no common subsequence, return 0.
*
* A subsequence of a string is a new string generated from the original string with some
* characters (can be none) deleted without changing the relative order of the remaining
* characters.
*
* - For example, "ace" is a subsequence of "abcde".
*
* A common subsequence of two strings is a subsequence that is common to both strings.
*/
/**
* @param {string} text1
* @param {string} text2
* @return {number}
*/
var longestCommonSubsequence = function(text1, text2) {
const dp = new Array(text1.length + 1).fill(0).map(() => new Array(text2.length + 1).fill(0));
for (let i = 1; i <= text1.length; i++) {
for (let j = 1; j <= text2.length; j++) {
if (text1.charAt(i - 1) === text2.charAt(j - 1)) {
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
return dp[text1.length][text2.length];
};