首页 > 代码库 > 最长公共子序列
最长公共子序列
- 细节
- 解决方案
- 叉子(6)
- 话语(30)
编写一个称为LCS
该函数的函数可以接受两个序列,并返回传递给序列的最长子序列。
子
子序列与子字符串不同。子序列的术语不需要是原始序列的连续项。
示例子序列
“abc”=“a”,“b”,“c”,“ab”,“ac”,“bc”
LCS示例
LCS( "abcdef" , "abc" ) => returns "abc"
LCS( "abcdef" , "acf" ) => returns "acf"
LCS( "132535365" , "123456789" ) => returns "12356"
笔记
- 两个参数都是字符串
- 返回值必须是字符串
- 如果没有共同的子序列,返回一个空字符串
- 两个参数都将有一个或多个字符(在JavaScript中)
- 所有测试只能有一个最长的共同子序列。不要担心这样的情况
LCS( "1234", "3412" )
,这将有两个可能最长的共同子序列:"12"
和"34"
。
请注意,Haskell变体将使用随机测试,但任何最长的共同子序列将是有效的。
请注意,OCaml变体使用通用列表而不是字符串,并且还将具有随机测试(任何最长的公共子序列将是有效的)。
自己并没有完成:答案如下
function LCS(x, y) { yChar=y.split(""); var start=0; var arr=[]; for(var i=0;i<yChar.length;i++){ pos=x.indexOf(yChar[i],start); if(pos>=start){ arr.push(yChar[i]); start=pos+1; } } return arr.join(""); }
最长公共子序列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。