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程序设计有所帮助。