给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度。
输入描述:
输入为两行字符串(可能包含空格),长度均小于等于50.
输出描述:
输出为一个整数,表示最长公共连续子串的长度。
示例1
输入
abcde abgde
输出
2
思想 :即创建一个二维数组 两个下标分别表示两个字符串比较后最大的子字符串长度(如果字符不匹配则为0,匹配则为前一个匹配结果+1)
import java.util.*;public class Main{
public static int getMax(String str1,String str2){
if(str1.length()==0||str2.length()==0)
return 0;
int len1 = str1.length();
int len2 = str2.length();
int[][] result = new int[len1+1][len2+1];
int maxs=0;
for(int i=1;i<=len1;i++)
for(int j=1;j<=len2;j++){
if(str1.charAt(i-1)==str2.charAt(j-1)){
result[i][j] = result[i-1][j-1]+1;
maxs = Math.max(maxs,result[i][j]);
}else{
result[i][j]=0;
}
}
return maxs;
}
public static void main(String arg[]){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str1= sc.nextLine();
String str2=sc.nextLine();
System.out.print(getMax(str1,str2));
}
}
}