摘要:本文主要向大家介绍了JAVA语言之使用动态规划计算最长公共子串,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了JAVA语言之使用动态规划计算最长公共子串,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
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));
}
}
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号