思路
从后往前算:
递归基为:有一个序列为长度为0时
两种情况:
1.两个序列最后一个元素相同,截取并保存
2.最后一个不相同:分为两个算法
(1)抛弃第一个序列最后一个元素,第二个序列不变,继续递归
(2)抛弃第二个序列最后一个元素,第一个序列不变,继续递归
最后取这两者长的
代码
function getLCS(l1,l2) {
if(l1.length==0||l2.length==0) return ''
if(l1[l1.length-1]==l2[l2.length-1]) return getLCS(l1.slice(0,l1.length-1),l2.slice(0,l2.length-1)) + l1[l1.length-1]
let result1 = getLCS(l1.slice(0,l1.length-1),l2)
let result2 = getLCS(l1,l2.slice(0,l2.length-1))
return result1.length > result2.length ? result1 : result2
}
console.log(getLCS('afgbbnhhhhhkh','aghjbbcccck'))