试一下这样修改下:
- import java.util.*;
- class Test5{
- public static void main(String[] args){
- String s1="kiokk";
- String s2="kib3oktr";
- System.out.println(maxSubstring(s1,s2));
- }
- public static ArrayList maxSubstring(String s1,String s2){
- String max,min;
- int len=0; //用于保存最大子串的长度
- ArrayList<String> al=new ArrayList<String>(); //用于存储最大子串
- max=(s1.length()>s2.length())? s1:s2;
- min=(max==s1)? s2:s1;
- System.out.println(max+"....."+min);
- for(int x=0;x<min.length();x++){
- for(int y=0,z=min.length()-x;z!=min.length()+1;y++,z++){
- String temp=min.substring(y,z);
- temp.toCharArray();
- //String[] q=null;
- //System.out.println("temp="+temp);
- if(max.contains(temp)){
- //System.out.println("结果是"+temp);
- if(temp.length()>=len){ //代码首先产生的相同子串的长度肯定是最大的,所以这样判断 没问题,后续还有相同长度的子串时也加入到al中
- len=temp.length();
- al.add(temp);
- }
- }
-
-
- }
- }
- return al;
- }
- }
复制代码
打印结果是[ki,ok] |