A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
|
|
@ -0,0 +1,24 @@
|
|||
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
|
||||
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
|
||||
return result
|
||||
Loading…
Add table
Add a link
Reference in a new issue