这是典型的字符串动态规划问题。设 str1 长度为 n,str2 长度为 m,我们用最长公共后缀的思想做 动态规划(DP):
定义:dp[j] 表示在当前处理到 str1 的第 i 个字符、str2 的第 j 个字符时(均为下标从 1 开始),两者以这两个位置结尾的最长公共子串长度。
转移:
str1[i-1] == str2[j-1],则 dp[j] = dp[j-1] + 1;dp[j] = 0(以当前两个位置结尾的公共子串被中断)。给定两个字符串 str1 和 str2 ,输出两个字符串的最长公共子串题目保证 str1 和 str2 的最长公共子串存在且唯一。