about summary refs log tree commit diff
path: root/scratch/facebook/longest-common-substring.py
diff options
context:
space:
mode:
Diffstat (limited to 'scratch/facebook/longest-common-substring.py')
-rw-r--r--scratch/facebook/longest-common-substring.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/scratch/facebook/longest-common-substring.py b/scratch/facebook/longest-common-substring.py
new file mode 100644
index 000000000000..8a838db45d1e
--- /dev/null
+++ b/scratch/facebook/longest-common-substring.py
@@ -0,0 +1,20 @@
+from utils import get, init_table, print_table
+
+def longest_common_substring(a, b):
+    """
+    Computes the length of the longest string that's present in both `a` and
+    `b`.
+    """
+    table = init_table(rows=len(b), cols=len(a), default=0)
+    for row in range(len(table)):
+        for col in range(len(table[row])):
+            if b[row] == a[col]:
+                table[row][col] = 1 + get(table, row - 1, col - 1)
+    return max([max(row) for row in table])
+
+dictionary = ["fish", "vista"]
+result = [longest_common_substring("hish", x) for x in dictionary]
+expected = [3, 2]
+print(result, expected)
+assert result == expected
+print("Success!")