我知道如何找到两个序列/字符串的 lcs,但 lcs 并没有限制子序列必须是连续的。我已经尝试如下
function lccs(a, b)
if a.length == 0 or b.length == 0
return ""
possible = []
if a[0] == b[0]
possible.push(lcs(a[1:), b[1:])
possible.push(lcs(a[1:], b))
possible.push(lcs(a, b[1:))
return longest_string(possible)
wherelongest_string
返回数组中最长的字符串,s[1:]
表示从第一个字符开始的 s 切片。
我已经在 javascript 中的浏览器和 golang 中运行它,在远程服务器上,我将每个对 lccs 的调用放在它自己的 goroutine 中,虽然我不知道服务器的硬件规格,所以我不知道这些例程的并行化。
在这两种情况下,对于我的需求来说,运行速度都太慢了。有没有办法加快这个速度?