动态规划——求两个字符串子串的个数和最长子串的长度
来源:互联网 发布:php 图片缩略图 编辑:程序博客网 时间:2024/05/20 16:12
美图测开的笔试题:
求两个字符串的子串个数和最大子串长度。
(需要注意一下子串和子序列概念并不相同)
字符串1:str1,字符串2:str2
用dp[i][j]表示以str1[i]和str[j]结尾的相同子串的长度。
则转移方程显然为:
1.str1[i] != str2[j],则dp[i][j] = 0
2.str1[i] == str2[j],则dp[i][j] = dp[i-1][j-1] + 1
边界:当i==0 或j==0 的时候:如果str1[i] == str2[j],则dp[i][j] = 1,否则为0
举例:str1 =‘abcde’ str2=‘eabc’
转移矩阵eg:
子串个数:
这个问题卡了一会儿,考虑到长度为1的子串,子串个数为1;长度为2的子串,子串个数为2+1=3,;长度为3的子串,个数为3+2+1=6.
参看上面的矩阵,会发现子串个数刚好为不为0的数字之和。
python实现:
阅读全文
0 0
- 动态规划——求两个字符串子串的个数和最长子串的长度
- 求两个字符串的最长公共子串的长度
- 求两个字符串的最长公共子串的长度
- 求两个字符串的最长公共子序列的长度(动态规划)
- 求两个字符串的最长公共子序列的长度(动态规划)
- 求两个字符串中的最长公共子串的长度
- 求两个字符串公共子串的最长长度
- 求两个字符串最长公共子串的长度
- 动态规划——求最长公共子序列(和子串)长度
- 关于公共子串的分析,求两个字符串中所有公共子串个数,以及最长公共子串和长度。
- 求两个字符串最长公共子串(动态规划)
- 求两个字符串中最长连续子字符串的长度
- 求字符串中满足所有字符个数相等的最长子串长度
- 利用后缀数组求字符串的最长重复子串的算法 利用二维数组求两个字符串的最长公共字串(动态规划)
- 求两个字符串的前后重叠的最长子串的长度
- 动态规划法求最长公共子串长度
- 动态规划——求最长上升子序列长度
- POJ 3415 求两个字符串间长度不小于k的公共子串的个数
- LCT(Link-Cut-Tree)学习
- Maven项目对象模型(POM)
- JZOJ 5344. 【NOIP2017模拟9.3A组】摘果子
- Eclipse 的 Java Web 项目环境搭建
- 25.Map集合
- 动态规划——求两个字符串子串的个数和最长子串的长度
- 深入理解python多线程与GIL
- Nginx动静分离+负载均衡实现
- 仅允许运行使用网络级别身份验证的远程桌面的计算机连接
- iBATIS SQL Maps之Parameter Map。
- hdu 1213 求树的个数
- ScheduledThreadPoolExecutor详解
- Selenium IDE
- Android自动登录 记住用户名密码实现 SharedPreferences