首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-09-09 
字符串最大公共子序列以及最大公共子串问题最大公共子序列public static void lcs2(){String xabcdepoi

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

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));    }

热点排行