java实现求两个字符串最长公共子串的方法
本文实例讲述了java实现求两个字符串最长公共子串的方法。分享给大家供大家参考,具体如下:
这个是华为OJ上的一道题目。首先,如果我们用java写代码,华为OJ有以下三条规则需遵守,否则编译无法通过或者用例无法通过,规则如下:
(1)一定不可以有包名;
(2)主类名只能为Main;
(3)不可以输出与结果无关的信息。
好了,按照以上规则,我们写出来的代码如下(此代码不是最优的,只是用来记录华为OJ上java代码的书写规则):
importjava.util.Scanner;
publicclassMain{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
MainmainObj=newMain();
intlen=mainObj.getCommonStrLength(sc.next(),sc.next());
System.out.println(len);
}
intgetCommonStrLength(Stringstr1,Stringstr2){
str1=str1.toLowerCase();
str2=str2.toLowerCase();
intlen1=str1.length();
intlen2=str2.length();
Stringmin=null;
Stringmax=null;
Stringtarget=null;
min=len1<=len2?str1:str2;
max=len1>len2?str1:str2;
//最外层:min子串的长度,从最大长度开始
for(inti=min.length();i>=1;i--){
//遍历长度为i的min子串,从0开始
for(intj=0;j<=min.length()-i;j++){
target=min.substring(j,j+i);
//遍历长度为i的max子串,判断是否与target子串相同,从0开始
for(intk=0;k<=max.length()-i;k++){
if(max.substring(k,k+i).equals(target)){
returni;
}
}
}
}
return0;
}
}
希望本文所述对大家Java程序设计有所帮助。