September Morn Update
This commit is contained in:
parent
4e2d22a71d
commit
aac6731f2c
6856 changed files with 141342 additions and 21127 deletions
|
|
@ -1,23 +1,18 @@
|
|||
def lcs(a, b):
|
||||
lengths = [[0 for j in range(len(b)+1)] for i in range(len(a)+1)]
|
||||
# row 0 and column 0 are initialized to 0 already
|
||||
# generate matrix of length of longest common subsequence for substrings of both words
|
||||
lengths = [[0] * (len(b)+1) for _ in range(len(a)+1)]
|
||||
for i, x in enumerate(a):
|
||||
for j, y in enumerate(b):
|
||||
if x == y:
|
||||
lengths[i+1][j+1] = lengths[i][j] + 1
|
||||
else:
|
||||
lengths[i+1][j+1] = max(lengths[i+1][j], lengths[i][j+1])
|
||||
# read the substring out from the matrix
|
||||
result = ""
|
||||
x, y = len(a), len(b)
|
||||
while x != 0 and y != 0:
|
||||
if lengths[x][y] == lengths[x-1][y]:
|
||||
x -= 1
|
||||
elif lengths[x][y] == lengths[x][y-1]:
|
||||
y -= 1
|
||||
else:
|
||||
assert a[x-1] == b[y-1]
|
||||
result = a[x-1] + result
|
||||
x -= 1
|
||||
y -= 1
|
||||
|
||||
# read a substring from the matrix
|
||||
result = ''
|
||||
j = len(b)
|
||||
for i in range(1, len(a)+1):
|
||||
if lengths[i][j] != lengths[i-1][j]:
|
||||
result += a[i-1]
|
||||
|
||||
return result
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue