a = "ABCBDAB"b = "BDCABA"expected 4
Loading 3D view…
Row 0 and column 0 compare against an empty string, so they are all 0
function lcs(a: string, b: string): number {
const rows = a.length + 1;
const cols = b.length + 1;
const dp = Array.from({ length: rows }, () => new Array<number>(cols).fill(0));
for (let i = 1; i < rows; i++) {
for (let j = 1; j < cols; j++) {
if (a[i - 1] === b[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[rows - 1][cols - 1];
}