最大公共子串--动态规划
来源:互联网 发布:阿里云怎么建设网站 编辑:程序博客网 时间:2024/06/15 00:02
和最大公共子序列类似,都是采用的是动态规划,不同的是,连续的串不需要判断不相等情况下的求最大,只需要判断相等即可,然后更新最大长度和每个序列的起始位置。
package stringTest;/** * 最大公共子串 * @author duola * */public class lcs2 { public static String lcs2(String s1,String s2) { if(s1==""||s2==""||s1.length()<=0||s2.length()<=0) return ""; int [][]c=new int[s1.length()+1][s2.length()+1]; int max=0,m=0,n=0; for(int i=s1.length()-1;i>=0;i--){ for(int j=s2.length()-1;j>=0;j--){ if(s1.charAt(i)==s2.charAt(j)){ c[i][j]=c[i+1][j+1]+1; } if(c[i][j]>max){ max=c[i][j]; m=i; n=j; } } } System.out.println("最大子串的长度是:"+max); StringBuilder sb=new StringBuilder(); for(int i=m,j=n;i<s1.length()&&j<s2.length();i++,j++){ if(c[i][j]>0){ sb.append(s1.charAt(i)); } } return sb.toString(); } public static void main(String [] args) { String s1="abcdfrgrgr"; String s2="sbcdfjksjdksgrgjk"; System.out.print("最大的公共子串是"+lcs2(s1,s2)); }}
需要注意的是输出的是最后一个最大公共子串,因为最大公共子串可能有多个。
0 0
- 动态规划解最大公共子串
- 最大公共子串--动态规划
- 动态规划 字符串最大公共子序列以及最大公共子串问题LCS
- 动态规划之 longest common substring最大公共子串
- 最大公共子序列--动态规划
- 动态规划(最大公共子序列)
- js算法:动态规划-最大公共子串与最大子段和
- 最大子序列、最长连续公共子串(连续)、最长公共子序列(动态规划)
- 最大公共子序列动态规划算法解法
- 动态规划_最大公共子序列长度问题
- 动态规划方法求最大公共子序列
- hud1151 动态规划 最大的公共子序列
- 动态规划之longest common subsequence最大公共子序列
- java 动态规划最大公共子序列问题
- 最长公共子序列&&最长公共子串---[动态规划]
- 动态规划--最长公共子序列和公共子串
- 动态规划-最长公共子序列、最长公共子串
- 动态规划 : 最长公共子串
- Android 内存泄漏总结(超级实用)
- 七牛技术总监肖勤:微服务架构实践经验分享(摘抄)
- 看了一则广告,学会for循环~【java】
- 互联网协议入门(一)
- Xcode7 中创建类扩展文件
- 最大公共子串--动态规划
- css3loading 状态4
- 10G CRS安装失败后的删除操作
- AccessibilityService 服务配置文件的内容详解(一)
- (前端开发)input标签在chrome下自动填充变成黄色背景的解决方法
- webrtc 的回声抵消(aec、aecm)算法简介
- 如何去掉app顶部标题
- Oracle 12c单机数据库干净卸载
- 匈牙利命名法的辩思