最长公共子串
子串连续
step1. 二维矩阵中相同元素取1
b a b
c 0 0 0
a 0 1 0
b 1 0 1
a 0 1 0
则对角线最长为公共子串长度
step2. 对以上矩阵做累计。若左上角为1,元素累加。
b a b
c 0 0 0
a 0 1 0
b 1 0 2
a 0 2 0
则矩阵中,最大的元素为最长公共子串长度。
最长公共子序列
子序列不连续
G C T A
0 0 0 0 0
G 0 1 1 1 1
B 0 1 1 1 1
T 0 1 1 2 2
A 0 1 1 2 3
- LCS(S1,S′2)
- LCS(S′1,S2)
-
LCS(S′1,S′2),c1!=c2
;
LCS(S′1,S′2)+1,c1=c2
以上三者最大值,即为 LCS(S1,S2) 的值