摘要:
阅读全文
摘要:
2011年3月11日 onedouble.net今天在面试翻倒一个问题:求两个字符串的最大公共子串,我用逐个B的越来越短的子串去A中FIND,总觉得效率不高,搜索了一下有一个算法很巧妙:把字符串1(长度m)横排,串2(长度n)竖排,得到一个m×n的矩阵c,矩阵的每个元素的值如下,如果m[i]=n[j],则c[j][i]=1,否则,c[j][i]=0。然后找出矩阵中连续是1的对角线最长的一个,则对角线的长度就是公共子串的长度.经过改进,可以不需要构造矩阵,因为第i行如果有字母匹配,其取值仅与第i-1行相关,若m[i]=n[j],则c[j][i] = c[j-1][i-1] + 1,这样 阅读全文