1. 问题描述
子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串
- cnblogs
- belong
比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与母串保持一致,我们将其称为公共子序列。最长公共子序列(Longest Common Subsequence, LCS),顾名思义,是指在所有的子序列中最长的那一个。子串是要求更严格的一种子序列,要求在母串中连续地出现。在上述例子的中,最长公共子序列为blog(cnblogs, belong),最长公共子串为lo(cnblogs, belong)。
2. 求解算法
对于母串\(X = < x_1, x_2, \cdots , x_m >\), \(Y = < y_1, y_2, \cdots , y_n >\),求LCS与最长公共子串。
暴力解法
假设 \(m < n\), 对于母串\(X\),我们可以暴力找出\(2^m\)个子序列,然后依次在母串\