类比Subquence问题的动态规划解法,Substring也可以用动态规划解决,令
c[i][j]表示同时以X[i]和Y[j]结尾,且包含X[i]和Y[j]的公共子串的长度。求c[i][j]的
可以转化为子问题c[i-1][j-1]
比如
X = <y, e, d, f>
Y = <y, e, k, f>
c[1][1] = 1
c[2][2] = 2
c[3][3] = 0
c[4][4] = 1
动态转移方程为:
如果xi == yj, 则 c[i][j] = c[i-1][j-1]+1
如果xi ! = yj, 那么c[i][j] = 0
最后求Longest Common Substring的长度等于
max{c[i][j], 1<=i<=n, 1<=j<=m}