首页 > 代码库 > LintCode-Longest Common Subsequence

LintCode-Longest Common Subsequence

Given two strings, find the longest comment subsequence (LCS).

Your code should return the length of LCS.

Example

For "ABCD" and "EDCA", the LCS is "A" (or D or C), return 1

For "ABCD" and "EACB", the LCS is "AC", return 2

Solution:

 1 public class Solution { 2     /** 3      * @param A, B: Two strings. 4      * @return: The length of longest common subsequence of A and B. 5      */ 6     public int longestCommonSubsequence(String A, String B) { 7         int lenA = A.length(), lenB = B.length(); 8         if (lenA==0 || lenB == 0) return 0; 9 10         int[][] lcs = new int[lenA+1][lenB+1];11         for (int i=0;i<=lenA;i++) lcs[i][0] = 0;12         for (int i=0;i<=lenB;i++) lcs[0][i] = 0;13 14         for (int i=1;i<=lenA;i++)15             for (int j=1;j<=lenB;j++){16                 lcs[i][j] = Math.max(lcs[i-1][j], lcs[i][j-1]);17                 if (A.charAt(i-1) == B.charAt(j-1) && lcs[i][j]<lcs[i-1][j-1]+1)18                 lcs[i][j] = lcs[i-1][j-1]+1;19             }20 21         return lcs[lenA][lenB];22     }23 }

 

LintCode-Longest Common Subsequence