图6-9
第2步,计算单元格的值,如果两个字母不相同,值为0;如果两个字母相同,值为左上角邻居的值加1。如图6-10所示。
图6-10
第3步,查找单词Fish和Hish的最长公共子串时,网格如图,最长公共子串为ish。如图6-11所示。
图6-11
查找单词hish和vista的最长公共子串时,网格如图,最长公共子串为is。如图6-12所示。
图6-12
所以,Alex输入了hish,那他原本要输入的是fish而不是vista。
伪代码实现如下:
if (word_a[i] == word_b[j]) //两个字母相同
cell[i][j] = cell[i-1][j-1] 1;
else //两个字母不相同
cell[i][j] = 0;
2> 最长公共子序列
假设Alex不小心输入了fosh,他原本想输入的是fish还是fort呢?
我们使用最长公共子串公式来比较它们。如图6-13所示。