77 · 最长公共子序列 Longest Common Subsequence
描述
Given two strings, find the longest common subsequence (LCS).
Your code should return the length of LCS.
输入:
A = “ABCD”
B = “EACB”
输出:
2
解释:
LCS 是 “AC”
public class Solution {
/**
* @param A: A string
* @param B: A string
* @return: The length of longest common subsequence of A and B
*/
public int longestCommonSubsequence(String A, String B) {
// write your code here
int n = A.length() , m = B.length() ;
int[][] f = new int[n+1][m+1] ;
for(int i = 0 ; i <= m ; i++){
f[0][i] = 0 ;
}
for(int j = 0 ; j <= n ; j++){
f[j][0] = 0 ;
}
for(int i = 1 ; i <= n ; i++){
for(int j = 1 ; j <= m ; j++){
f[i][j] = Math.max(f[i-1][j] , f[i][j-1]) ;
if(A.charAt(i-1) == B.charAt(j-1)){
f[i][j] = f[i-1][j-1] + 1 ;
}
}
}
return f[n][m] ;
}
}