2つの文字列の中で最も長い同じサブ文字列を見つけます.

4473 ワード

// 



public class Stringdemo {

    public static void main(String[] args) {

    

        String str1 = new String("eeabcde");

        String str2 = new String("bcdefabcabcdedegg");

        byte[] char1 = str1.getBytes();

        byte[] char2 = str2.getBytes();

        int len1 = char1.length;

        int len2 = char2.length;

        String maxchar=new String("");

        StringBuffer temp = new StringBuffer(" ");

        int maxl = 0;

        int loops = 0;

        for(int i=0;i<len1;i++)

            for(int j=0;j<len2;j++){

                int pos1 = i;

                int pos2 = j;

                int l = 0;

                //temp = new StringBuffer("");

                temp.delete(0, temp.length());

                while(char1[pos1]==char2[pos2]) {

                    l++;

                    temp.append((char)char1[pos1]);

                    if (++pos1>len1-1) break;

                    if (++pos2>len2-1) break;                    

                }

                //System.out.println(""+(++loops)+":"+temp);

                if (l>maxl) { 

                    maxl = l;

                    maxchar = temp.toString();

                    

                }

            }

        System.out.println(""+maxl+" "+maxchar);

    }

}