LCS算法&最大公共子串&最长公共子序列 PHP 实现 最长公共上升子序列 最长公共子序列c语言 最长公共递增子序
程序员文章站
2022-04-15 10:26:27
...
求两个字符串的最大公共子串&最长公共子序列
输入:
abcbdab
bdcaba
4
即
bdcaba
与abcbdab
的最大公共子串长度为 4
常规思路
枚举法,算出两个字符串的所有子序列,然后分别作比较,选出最大的一个子串
缺点:对于一个长度为 n 的字符串,子串个数有 2 的 n 次方个,然后在依次比较两个字符串的子串,效率过低
动态规划 LCS算法
以动态规划的思想来解这个题,我们用一个二位数组 $dp[][]
来存储各个字符串对应的状态,具体什么含义就不细说了,百度一下,你就知道,主要是用 PHP 实现一下
代码如下:
functionlcs($str1, $str2)
{// 存储生成的二维矩阵$dp = array();
// 最大子串长度$max = 0;
for ($i = 0; $i $str1