您的位置:首页 > 产品设计 > UI/UE

[阿里2015校招笔试]求字符串query和text最长连续字母序列的长度

2014-08-29 22:11 309 查看
直接上代码

/**
* 求字符串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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐