LCS的全称为Longest Common Subsequence,用于查找两个字符串中的最大公共子序列,这里需要注意区分子序列与子串,所谓子序列,指的是从前到后,可以跳跃元素筛选,而字串则必须连续筛选。
例如AB##!C!@#E和AB123CC321E两个字符串,如果找最长公共字串,只能是AB;如果是找最长公共子列,则是ABCE。
还有一种变种的LCS,允许元素重复,这样找到的子列将会是ABCCE,但是这样回溯是比较麻烦的,一般只能得到序··列的长度。
下面我们先介绍基本LCS的算法,然后介绍其变体。
【基本LCS】
1.首先作如下约定
①设字符串a、b的索引从1开始,a的全长为xm,b的全长为yn。