美文网首页
最大公共连续子串

最大公共连续子串

作者: Orson_4597 | 来源:发表于2019-06-21 09:20 被阅读0次

给定一组字符串,找到最长公共连续子串;
动态规划转移方程
str1[i] == str2[j]: dp[i][j] = dp[i - 1][j - 1] + 1
str1[i] != str2[j]: 0

class Solution {
public String longestCommon(String[] strs) {
if (strs.length == 0 || strs == null) return "";
String common = strs[0];
for (int i = 1; i < strs.length; i++) {
if (common.equals("")) {
return "";
}
else {
common = find2Common(common, strs[i]);
}
}
return common;
}

private String find2Common(String str1, String str2) {
    char[] char1 = str1.toCharArray();
    char[] char2 = str2.toCharArray();
    int max = 0;
    int end = 0;
    int[][] dp = new int[str1.length()][str2.length()];
    
    for (int i = 0; i < str1.length(); i++) {
        for (int j = 0; j < str2.length(); j++) {
            if (char1[i] == char2[j]) {
                dp[i][j] = (i > 0 && j > 0) ? dp[i - 1][j - 1] + 1 : 1;
                if (dp[i][j] > max) {
                    max = dp[i][j];
                    end = i;
                }
            }
            else {
                dp[i][j] = 0;
            }
            
        }
    }
    
    String resStr = ""; 
    if (max != 0) {
        char[] res = new char[max];
        for (int i = end - max + 1; i <= end; i++) {
            res[i - (end - max + 1)] = char1[i];
        }
        resStr = String.valueOf(res);
    }
    return resStr;
}

}

相关文章

  • 最大公共连续子串

    给定一组字符串,找到最长公共连续子串;动态规划转移方程str1[i] == str2[j]: dp[i][j] =...

  • 算法(04)动态规划

    零钱问题 背包问题 最长公共子序列 最长公共子串 最长上升子序列 最大连续子序列和

  • 最大公共子序列(LCS)

    子序列 子序列不要求字符连续(这与串不同) 公共子序列 两个字符串中的相同的子序列 最大公共子序列的例子字符串 X...

  • 2017年Java方向C组第六题

    标题:最大公共子串 最大公共子串就是求两个串的所有子串中能够匹配上的最大长度是多少。 比如:"abcdkkk" 和...

  • 【动态规划】LCS算法 python

    问题描述1求两字符串的连续最大公共子字符串(The Longest Common Substring)这个LCS问...

  • 第八届蓝桥杯 最大公共子串 Java A组

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

  • 2019-01-15第八届蓝桥杯javaB组 最大公共子串

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

  • JS求最长公共子序列、最大公共子串、最大子段和

    一、最长公共子序列 二、最大公共子串 三、最大子段和 参考链接:查找两个字符串的最长公共子串的Javascript...

  • LCS问题

    LCS问题包括最长公共子序列和最长公共子串,其中,最长公共子串要求必须连续。 对于二者的求解方式 最长公共子序列:...

  • 最长公共子序列问题总结

    公共子序列与公共子串不同在于子序列不要求连续。利用两个二维数组进行求解,c数组负责存值,求得子序列最大长度,即途中...

网友评论

      本文标题:最大公共连续子串

      本文链接:https://www.haomeiwen.com/subject/ltueqctx.html