Appearance
1143.最长公共子序列
题解
js
/**
* @param {string} text1
* @param {string} text2
* @return {number}
*/
var longestCommonSubsequence = function (text1, text2) {
let dp = Array.from(Array(text1.length + 1), () =>
Array(text2.length + 1).fill(0)
);
for (let i = 1; i <= text1.length; i++) {
for (let j = 1; j <= text2.length; j++) {
// 如果两个相等,代表找到公共字符
if (text1[i - 1] === text2[j - 1]) {
// 最长数量 + 1
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
// text1和text2当前公共子序列是由前面推出
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
return dp[text1.length][text2.length];
};
/**
* @param {string} text1
* @param {string} text2
* @return {number}
*/
var longestCommonSubsequence = function (text1, text2) {
let dp = Array.from(Array(text1.length + 1), () =>
Array(text2.length + 1).fill(0)
);
for (let i = 1; i <= text1.length; i++) {
for (let j = 1; j <= text2.length; j++) {
// 如果两个相等,代表找到公共字符
if (text1[i - 1] === text2[j - 1]) {
// 最长数量 + 1
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
// text1和text2当前公共子序列是由前面推出
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
return dp[text1.length][text2.length];
};