直接上代码
/**
* 求字符串query和text最长连续字母序列的长度 原理: 1.以query.length()和text.length()组成矩阵martix;
* 2.矩阵martix[i][j]对应的字符相同,则该节点赋值为1; 3.若当前字符相同节点的值 martix[i][j]=
* martix[i-1][j-1] +1,则当前节点的值就是最大公用子串的长度;
*
* @param query
* @param text
* @return
*/
public static int getLCSLen(String query, String text) {
if (query == null || text == null) {
return 0;
} else if (query.equals(text)) {
return query.length();
}
int length = 0;
int end = 0;// 可以用来求最长公共子序列,这里未用到
int[][] martix = new int[query.length()][text.length()];
for (int i = 0; i < query.length(); i++) {
for (int j = 0; j < text.length(); j++) {
int n = (i - 1 >= 0 && j - 1 >= 0) ? martix[i - 1][j - 1] : 0;
martix[i][j] = query.charAt(i) == text.charAt(j) ? 1 + n : 0;
if (martix[i][j] > length) {
length = martix[i][j];
end = i;
}
}
}
return length;
}