zoukankan      html  css  js  c++  java
  • java 动态规划算法求解最长公共子串

    最近在项目中碰到了这样的一个问题,要比较JS和CSS是否做了修改,先是想着借助第三方工具发现没找到,后面转念一想,这个问题不就是对两个文件的第一行求最大的公共子串嘛,既然是要求公共子串的最大长度,由此想到了动态规划算法。

    代码是从网上C++改写过来的,感谢那位C++的兄弟,代码如下:

    package dp;
    
    /**
     * 用动态规划算法求解  最长公共子串
     * @author 
     *
     */
    public class LCSSuffix {
    
        private static String getLCSLength(String s,String t){
            int p = s.length() ;
            int q = t.length();
            
            String[][] num = new String[p][q];
            char char1 = '';
            char char2 = '' ;
            
            int len = 0 ;
            String lcs = "";
            for(int i = 0;i<p ;i++){
                for(int j=0;j<q;j++){
                    char1 = s.charAt(i);
                    char2 = t.charAt(j);
                    if(char1 != char2){
                        num[i][j] = "";
                    }else {
                        if(i==0 ) num[i][j] = String.valueOf(char1) ;
                        else if(j ==0)num[i][j] = String.valueOf(char2);
                        else num[i][j] = num[i-1][j-1] +String.valueOf(char1) ;
                        
                        if(num[i][j].length() > len){
                            len = num[i][j].length();
                            lcs = num[i][j];
                        }else if(num[i][j].length() == len){
                            lcs = lcs +","+num[i][j] ;
                        }
                    }
                }
            }
            return lcs ;
        }
        
        public static void main(String[] args) {
            String lcs = getLCSLength("baba","abab");
            System.out.println(lcs);
        }
    }
  • 相关阅读:
    行为模式-模板方法
    行为模式-策略模式
    行为模式-观察者 模式
    行为模式-责任链模式
    python-json
    mongo资料
    用with管理lock锁
    枚举类使用
    db2常见操作命令
    trancate immediate reuse storage
  • 原文地址:https://www.cnblogs.com/xinzhuangzi/p/4271727.html
Copyright © 2011-2022 走看看