1 solutions
-
1
思路
最长公共子串
简化题意
给定两个字符串 和 ,问两个字符串的最长公共子串长度。
的长度为 , 的长度为
暴力做法
枚举 的每个子串是否在 中找到,即朴素的字符串匹配算法,每次匹配是 的。 枚举每个 的子串,则是以 的每个索引开始,依次和 进行比较,如果存在 的某个字符和对应的 的字符不匹配了,则说明后续也不会匹配了,这样的复杂度为 。
优化暴力做法
表示以 和 结尾的子字符串的相同的最大长度。 如果 ,必然有 $s[i-k+1]=t[j-k+1],s[i-k+2]=t[j-k+2],\cdots s[i]=t[j]$。故 是从 转移而来的。
状态转移方程为:
最后取所有 的 即可。
类似题目推荐
LeetCode
Codefun2000
代码
CPP
python
Java
Go
Js
- 1
Information
- ID
- 10
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- # Submissions
- 178
- Accepted
- 44
- Uploaded By