最长公共子序列

来源:互联网 发布:百度云vip淘宝搜不到 编辑:程序博客网 时间:2024/05/17 07:08

1.题目
这里写图片描述
2.算法思路
这里写图片描述
这里采用的是动态规划的方法,判断的是长度为i的数组和长度为j的数组的最长公共子串,其状态转移方程为dp[i][j]=

{dp[i1][j1]+1,max(dp[i1][j],dp[i][j1]),s1[i]==s2[i]s1[i]!==s2[i]

3. 代码

function LongestCommonString(s1,s2) {    var dp=new Array(s2.length+1).fill(0);    var lcs=new Array(s1.length+1).fill(dp);    for(var i = 1;i<=s1.length;i++){        for(var j = 1;j<=s2.length;j++){            if(s1[i]===s2[j]){                lcs[i][j]=Math.max(lcs[i][j],lcs[i-1][j-1]+1);            }else{                lcs[i][j]=Math.max(lcs[i-1][j],lcs[i][j-1]);            }        }    }    return lcs[i-1][j-1];}
原创粉丝点击