手写最长公共子串(Longest Common Substring)的二维动态规划解法,并分析时间与空间复杂度。
考察说明
考察动态规划的状态定义、转移方程、边界处理及复杂度分析
回答思路
- 能给出dp[i][j]表示以A[i-1]和B[j-1]结尾的最长公共子串长度
- 正确写出转移方程:若字符相等则dp[i][j]=dp[i-1][j-1]+1,否则为0
- 用变量记录全局最大值及其结束位置,能回溯输出子串
- 分析时间O(n*m)、空间O(n*m),并提及可优化到O(min(n,m))或滚动数组
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。