您的位置:首页 > 其它

lintcode-最长公共子序列-77

2015-09-10 21:09 288 查看
给出两个字符串,找到最长公共子序列(LCS),返回LCS的长度。

样例
给出"ABCD"
"EDCA",这个LCS是
"A" (或 D或C),返回1

给出 "ABCD"
"EACB",这个LCS是"AC"返回 2

注意

序列可以不连续。

class Solution {
public:

int longestCommonSubsequence(string A, string B) {
if(A.empty()||B.empty())
return 0;
int dp[A.length()+1][B.length()+1];
memset(dp,0,sizeof(dp));
int n=A.length();
int m=B.length();
int maxp=INT_MIN;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j){
if(A[i-1]==B[j-1])
dp[i][j]=dp[i-1][j-1]+1;
else
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
maxp=max(dp[i][j],maxp);
}
return maxp;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: