eagleyes125 发表于 2007-2-5 16:27:15

测试leader因掌握的算法之求最大公共子串


//求两个字符串的最大公共子串
public static String MaximumSubString(String s1,String s2){
        String longest = "";
        String substring = "";
        if(s1.length()>s2.length()){      //s1为两个串中的短串;s2为长串
                String temp = s1;
                s1 = s2;
                s2 = temp;
        }
        int len = s1.length();
        ok:for(int i=len;i>0;i--){
                for(int j=0;j<len-i+1;j++){
                        substring = s1.substring(j,j+i);
                        if(s2.indexOf(substring)!=-1){
                                longest = substring;
                                break ok;   //只要一找到最大子串,就退出这个for循环
                        }
                }
        }
        return longest;
}

eagleyes125 发表于 2007-2-5 16:31:31


public static void main(String[] args){
        //The result is :fsdf
        String s1 = "assbcdefsdfsdssf";
        String s2 = "fsafsdfkk";
        System.out.println("The Longest sub string is: "+MaximumSubString(s1,s2));
}
页: [1]
查看完整版本: 测试leader因掌握的算法之求最大公共子串