• Java实现第八届蓝桥杯最大公共子串


    最大公共子串

    最大公共子串长度问题就是:
    求两个串的所有子串中能够匹配上的最大长度是多少。

    比如:“abcdkkk” 和 “baabcdadabc”,
    可以找到的最长的公共子串是"abcd",所以最大公共子串长度为4。

    下面的程序是采用矩阵法进行求解的,这对串的规模不大的情况还是比较有效的解法。

    请分析该解法的思路,并补全划线部分缺失的代码。

    这个有点dp的意思,分别计算两个字符串每一个字符到另一个字符是否相等 若相等 则加前面字符的最大字符串 若前面字符也分别相等则他就等于a[i-1][j-1]+1 若不想等则为0+1

    public class 最大公共子串 {
    	static int f(String s1, String s2)  
        {  
            char[] c1 = s1.toCharArray();  
            char[] c2 = s2.toCharArray();  
      
            int[][] a = new int[c1.length+1][c2.length+1];  
      
            int max = 0;  
            for(int i=1; i<a.length; i++){  
                for(int j=1; j<a[i].length; j++){  
                    if(c1[i-1]==c2[j-1]) {  
                        a[i][j]=a[i-1][j-1]+1;  //填空  
                        if(a[i][j] > max) max = a[i][j];  
                    }  
                }  
            }  
      
            return max;  
        }  
      
        public static void main(String[] args){  
            int n = f("abcdkkk", "baabcdadabc");  
            System.out.println(n);  
        }
    }
    
  • 相关阅读:
    LinkedList源码解析
    HashMap源码解析
    HashMap和Hashtable区别
    arcgis api for js 之网络分析服务发布
    arcgis api for js 之发布要素服务
    arcis api for js 值 3.17 本地部署
    ArcGIS 产品体系结构
    layui select下拉框选项不显示
    windows10企业版2016长期服务版激活
    PHP常见的输出语句
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13077520.html
Copyright © 2020-2023  润新知