longest-common-subsequence

来源:互联网 发布:mac 怎么安装软件 编辑:程序博客网 时间:2024/06/10 19:13

中等 最长公共子序列

37%
通过

给出两个字符串,找到最长公共子序列(LCS),返回LCS的长度。

您在真实的面试中是否遇到过这个题? 
Yes
样例

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

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

注意


说明

最长公共子序列的定义:

  • 最长公共子序列问题是在一组序列(通常2个)中找到最长公共子序列(注意:不同于子串,LCS不需要是连续的子串)。该问题是典型的计算机科学问题,是文件差异比较程序的基础,在生物信息学中也有所应用。

  • https://en.wikipedia.org/wiki/Longest_common_subsequence_problem
public class Solution {    /**     * @param A, B: Two strings.     * @return: The length of longest common subsequence of A and B.     */    public int longestCommonSubsequence(String A, String B) {        int n = A.length();    int m = B.length();        int f[][] = new int[n + 1][m + 1];        for(int i = 0; i < n; i++){            for(int j = 0; j < m; j++){                f[i + 1][j + 1] = Math.max(f[i][j + 1], f[i + 1][j]);                if(A.charAt(i) == B.charAt(j))                    f[i + 1][j + 1] = f[i][j] + 1;            }        }        return f[n][m];    }}

REF:
http://blog.csdn.net/yysdsyl/article/details/4226630
http://www.cnblogs.com/huangxincheng/archive/2012/11/11/2764625.html
http://www.cnblogs.com/xudong-bupt/archive/2013/03/15/2959039.html


0 0
原创粉丝点击