1、问题描述:来源于《算法与数据结构题目最优解》左程云著
给定两个字符串str1和str2,返回两个字符串的最长公共子串,例如:str1="1AB2345CD",str2="12345EF",返回"2345"
2、问题分析
1)这个题目看起来和最长公共子序列很相似,在第一遍做的时候我也是做成了最长公共子序列,但是公共子串必须是连续的;
2)问题的关键在于状态的寻找,我觉得这个题目的状态不好找;最长公共子序列的状态dp[i][j]代表str1长度为i,str2长度为j时的子序列长度;本题目的状态dp[i][j]代表在必须把str1[i]和str2[j]当做公共子串最后一个字符的情况下,公共子串的长度。
3)上面的状态就代表如果str1[i]!=str2[j],那么就没法构成公共子串,那么此时dp[i][j]就为0;如果两者相等ÿ