读书人

字符串最大公共子序列以及最大公共子串

发布时间: 2012-09-09 09:27:54 作者: rapoo

字符串最大公共子序列以及最大公共子串问题
最大公共子序列

public static void lcs2(){        String x="abcdepoi";        String y="bcdefpoi";    int substringLength1 = x.length();        int substringLength2 = y.length();         int opt[][]=new int [substringLength1+1][substringLength2+1];        for(int i=1;i<=substringLength1;i++)        for(int j=1;j<=substringLength2;j++)        {        if(x.charAt(i-1)==y.charAt(j-1))        opt[i][j]=opt[i-1][j-1]+1;//状态转移方程,        }        int max=opt[0][0];        int m=0,n=0;        for(int i=substringLength1;i>=1;i--)        for(int j=substringLength2;j>=1;j--){        if(opt[i][j]>max)        {        max=opt[i][j];        m=i;        n=j;        }        }        System.out.println("x = "+x);        System.out.println("y = "+y);        System.out.println("max = "+max);        StringBuffer sb=new StringBuffer();        for(int i=m,j=n;i>=1&&j>=1;i--,j--)    {        if(opt[i][j]>0)        sb.append(x.charAt(i-1));    }        String result=sb.toString();        for(int i=result.length()-1;i>=0;i--)        System.out.print(result.charAt(i));    }

读书人网 >编程

热点推荐