Skip to content

Commit 11464c9

Browse files
author
Kohei Asai
authored
1143. Longest Common Subsequence (axross#146)
1 parent 85b1d4b commit 11464c9

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed
+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// 1143. Longest Common Subsequence
2+
// https://leetcode.com/problems/longest-common-subsequence/
3+
export default function longestCommonSubsequence(
4+
text1: string,
5+
text2: string
6+
): number {
7+
const memo = new Map();
8+
9+
function recurse(i1: number, i2: number): number {
10+
if (i1 === text1.length || i2 === text2.length) return 0;
11+
12+
const key = i1 + i2 * text1.length;
13+
14+
if (!memo.has(key)) {
15+
if (text1[i1] === text2[i2]) {
16+
memo.set(key, 1 + recurse(i1 + 1, i2 + 1));
17+
} else {
18+
memo.set(key, Math.max(recurse(i1 + 1, i2), recurse(i1, i2 + 1)));
19+
}
20+
}
21+
22+
return memo.get(key);
23+
}
24+
25+
return recurse(0, 0);
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { test } from "https://deno.land/std/testing/mod.ts";
2+
import { assertStrictEq } from "https://deno.land/std/testing/asserts.ts";
3+
import longestCommonSubsequence from "./longest_common_subsequence.ts";
4+
5+
test("1143. Longest Common Subsequence", () => {
6+
assertStrictEq(longestCommonSubsequence("abcde", "ace"), 3);
7+
assertStrictEq(longestCommonSubsequence("abc", "abc"), 3);
8+
assertStrictEq(longestCommonSubsequence("abc", "def"), 0);
9+
});

0 commit comments

Comments
 (0)