为了账号安全,请及时绑定邮箱和手机立即绑定

使用动态规划计算最长公共子串

标签:
Java


public class MatchStr {

    public static String a="abcdfishftfuia345345345";

    public static String b="foshdguuuutfu345345345abcd";

    public static void main(String [] arg){

        char[] c1=  a.toCharArray();      

        char[] c2 = b.toCharArray();      

        int [] [] all=new int[c1.length][c2.length];      

        for(int i=0; i<c1.length; i++){           

            for(int j=0; j<c2.length; j++){              

                all[i][j]=0;

            }           

        } 

        List<Character> list=new ArrayList<>();

        for(int i=0; i<c1.length; i++){          

            for(int j=0; j<c2.length; j++){             

                if(c1[i]==c2[j]){                 

                    int a1=i-1;

                    if(a1<0){

                        a1=0;

                    }               

                    int b1=j-1;

                    if(b1<0){

                        b1=0;

                    }                   

                    all[i][j]=all[a1][b1]+1;  

                }else{

                    all[i][j]=0;

                }         

            }

        }

        int maxx=0;

        int maxy=0;

        int max=0;

        for(int i=0; i<c1.length; i++){           

            for(int j=0; j<c2.length; j++){  

                if(all[i][j]>max){

                    maxx=i;

                    maxy=j;

                    max=all[i][j];

                }

            }      

        } 

        System.out.println(max+"->"+maxx+"->"+maxy);      

        for(int i=0; i<max; i++){

            list.add(c1[maxx-i]);

        }     

        Collections.reverse(list);     

        for(int i=0; i<list.size(); i++){           

            System.out.print(list.get(i));

        }

    }

}

©著作权归作者所有:来自51CTO博客作者大海之中的原创作品,如需转载,请注明出处,否则将追究法律责任


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消