Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,13 @@
|
|||
proc lcs(x, y: string): string =
|
||||
if x == "" or y == "":
|
||||
return ""
|
||||
|
||||
if x[0] == y[0]:
|
||||
return x[0] & lcs(x[1..x.high], y[1..y.high])
|
||||
|
||||
let a = lcs(x, y[1..y.high])
|
||||
let b = lcs(x[1..x.high], y)
|
||||
result = if a.len > b.len: a else: b
|
||||
|
||||
echo lcs("1234", "1224533324")
|
||||
echo lcs("thisisatest", "testing123testing")
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
proc lcs(a, b: string): string =
|
||||
var ls = newSeq[seq[int]](a.len+1)
|
||||
for i in 0 .. a.len:
|
||||
ls[i].newSeq(b.len+1)
|
||||
|
||||
for i, x in a:
|
||||
for j, y in b:
|
||||
if x == y:
|
||||
ls[i+1][j+1] = ls[i][j] + 1
|
||||
else:
|
||||
ls[i+1][j+1] = max(ls[i+1][j], ls[i][j+1])
|
||||
|
||||
result = ""
|
||||
var x = a.len
|
||||
var y = b.len
|
||||
while x > 0 and y > 0:
|
||||
if ls[x][y] == ls[x-1][y]:
|
||||
dec x
|
||||
elif ls[x][y] == ls[x][y-1]:
|
||||
dec y
|
||||
else:
|
||||
assert a[x-1] == b[y-1]
|
||||
result = a[x-1] & result
|
||||
dec x
|
||||
dec y
|
||||
|
||||
echo lcs("1234", "1224533324")
|
||||
echo lcs("thisisatest", "testing123testing")
|
||||
Loading…
Add table
Add a link
Reference in a new issue