public class MatchStr {
public static String a="abcdfishftfuia345345345";
public static String b="foshdguuuutfu345345345abcd";
public static void main(String [] arg){
char[] c1= a.toCharArray();
char[] c2 = b.toCharArray();
int [] [] all=new int[c1.length][c2.length];
for(int i=0; i<c1.length; i++){
for(int j=0; j<c2.length; j++){
all[i][j]=0;
}
}
List<Character> list=new ArrayList<>();
for(int i=0; i<c1.length; i++){
for(int j=0; j<c2.length; j++){
if(c1[i]==c2[j]){
int a1=i-1;
if(a1<0){
a1=0;
}
int b1=j-1;
if(b1<0){
b1=0;
}
all[i][j]=all[a1][b1]+1;
}else{
all[i][j]=0;
}
}
}
int maxx=0;
int maxy=0;
int max=0;
for(int i=0; i<c1.length; i++){
for(int j=0; j<c2.length; j++){
if(all[i][j]>max){
maxx=i;
maxy=j;
max=all[i][j];
}
}
}
System.out.println(max+"->"+maxx+"->"+maxy);
for(int i=0; i<max; i++){
list.add(c1[maxx-i]);
}
Collections.reverse(list);
for(int i=0; i<list.size(); i++){
System.out.print(list.get(i));
}
}
}
使用动态规划计算最长公共子串
原创
©著作权归作者所有:来自51CTO博客作者大海之中的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
操作系统 动态优先权进程调度实验 记录分享
操作系统 动态优先权进程调度实验记录分享
时间片 2d 测试数据 操作系统 实验 -
【动态规划】最长公共子序列与最长公共子串
3. 参考资料[1] cs2035, Longest Common Subsequence.[2] 一线码农, 经典算法题每日演练—
c语言 Common 经典算法 Dynamic -
动态规划解最长公共子串
截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载下载
动态规划 算法 最长公共子串 字符串 递推公式 -
576,动态规划解最长公共子串
动态规划解最长公共子串
最长公共子串 字符串 递推公式 -
最长公共子串lcs动态规划实现
最长公共子串要求在原字符串中是连续的,而子序列只需要保持相对顺序一
最长公共子串 公共子序列 javascript -
最长公共子串问题
最长公共子串问题
公共 子串 最长