2024-07-13 15:19:22 -07:00
|
|
|
val lcs = fn(s1, s2) {
|
|
|
|
|
var l, r, sublen = 1, 0, 0
|
|
|
|
|
for i of s1 {
|
|
|
|
|
for j in i .. len(s1) {
|
2025-02-27 18:35:13 -05:00
|
|
|
if not matching(s2, by=s2s(s1, of=i .. j)): break
|
2024-07-13 15:19:22 -07:00
|
|
|
if sublen <= j - i {
|
|
|
|
|
l, r = i, j
|
|
|
|
|
sublen = j - i
|
2023-07-01 11:58:00 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-07-13 15:19:22 -07:00
|
|
|
if r == 0: return ""
|
2025-02-27 18:35:13 -05:00
|
|
|
s2s s1, of=l .. r
|
2023-07-01 11:58:00 -04:00
|
|
|
}
|
|
|
|
|
|
2024-07-13 15:19:22 -07:00
|
|
|
writeln lcs("thisisatest", "testing123testing")
|