您的位置:首页 > 编程语言 > Java开发

java版求字符串的最大公共子串

2016-08-25 15:14 239 查看
package com.qianqiang.sort;

public class CommonSubstring {
public static void main(String[] args) {
//		待求
char[] a={'a','b','c','d','e'};
char[] b={'d','e','c','d','e'};
//	   定义存储矩阵
int[][] table=new int[a.length][b.length];
commomtSubstring(a,b,table);

}

private static void commomtSubstring(char[] a, char[] b, int[][] table) {
// TODO Auto-generated method stub
//      最大字串a的开始位置
int start1=-1;
//		最大字串2的开始位置
int start2=-1;
//      最大子串的长度
int longest=0;
for(int j=0;j<b.length;j++)
{
table[0][j]=(a[0]==b[j]?1:0);
}
for(int i=1;i<a.length;i++)
{

table[i][0]=(a[i]==b[0]?1:0);
for(int j=1;j<b.length;j++)
{
if(a[i]==b[j])
{
table[i][j]=table[i-1][j-1]+1;
}
}
}
for(int i=0;i<a.length;i++)
{
for(int j=0;j<b.length;j++)
{
if(longest<table[i][j])
{
longest=table[i][j];
start1=i-longest+1;
start2=j-longest+1;
}
}
}
System.out.print("a从"+start1+",b从"+start2);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java