算法12—动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
来源:互联网 发布:金税盘怎么恢复数据 编辑:程序博客网 时间:2024/05/21 03:16
1. 问题描述
子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串
- cnblogs
- belong
比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与母串保持一致,我们将其称为公共子序列。最长公共子序列(Longest Common Subsequence, LCS),顾名思义,是指在所有的子序列中最长的那一个。子串是要求更严格的一种子序列,要求在母串中连续地出现。在上述例子的中,最长公共子序列为blog(cnblogs, belong),最长公共子串为lo(cnblogs, belong)。
代码实现
public static int lcs(String str1, String str2) { int len1 = str1.length(); int len2 = str2.length(); int c[][] = new int[len1+1][len2+1]; for (int i = 0; i <= len1; i++) { for( int j = 0; j <= len2; j++) { if(i == 0 || j == 0) { c[i][j] = 0; } else if (str1.charAt(i-1) == str2.charAt(j-1)) { c[i][j] = c[i-1][j-1] + 1; } else { c[i][j] = max(c[i - 1][j], c[i][j - 1]); } } } return c[len1][len2];}
代码实现
public static int lcs(String str1, String str2) { int len1 = str1.length(); int len2 = str2.length(); int result = 0; //记录最长公共子串长度 int c[][] = new int[len1+1][len2+1]; for (int i = 0; i <= len1; i++) { for( int j = 0; j <= len2; j++) { if(i == 0 || j == 0) { c[i][j] = 0; } else if (str1.charAt(i-1) == str2.charAt(j-1)) { c[i][j] = c[i-1][j-1] + 1; result = max(c[i][j], result); } else { c[i][j] = 0; } } } return result;}
0 0
- 算法12—动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
- 面试(动态规划算法之:最长公共子序列 & 最长公共子串(LCS))
- 动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
- 动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
- 动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
- 动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
- 算法之动态规划2(LCS最长公共子序列, edit distance,交叉子串)
- 算法之动态规划(LCS最长公共子序列, edit distance,交叉子串)
- 算法导论-----最长公共子序列LCS(动态规划)
- 算法导论——动态规划之最长公共子序列(LCS)和最长回文子序列(LPS)
- 【算法之动态规划(三)】动态规划算法之:最长公共子序列 & 最长公共子串(LCS),字符串相似度算法
- 动态规划实现最长公共子序列(LCS)算法
- 动态规划算法解最长公共子序列LCS问题
- 动态规划算法解最长公共子序列LCS问题
- 动态规划算法解最长公共子序列LCS问题
- 动态规划算法解最长公共子序列LCS问题
- 动态规划算法解最长公共子序列LCS问题
- 动态规划算法解最长公共子序列LCS问题
- [Maven] - 安装与Eclipse搭建
- 记录网址
- SELinux对网站目录权限控制的不当的问题
- js 实现定时对函数的调用setInterval()方法
- ListView的优化之复用convertView和利用ViewHolder
- 算法12—动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
- Java Web 一些特殊字符的过滤(appscan检查的安全问题)
- Android github开源项目
- Android短信验证(手机号注册,绑定手机号获取验证码)实例
- HiBench运行spark用例报Initial job has not accepted any resources错误
- javascript的ajax请求过程
- java获取数组连续相同元素下标
- hive任务中MoveTask的策略
- 实现多次点击效果