• Lintcode: Longest Common Substring


    Given two strings, find the longest common substring.
    
    Return the length of it.
    
    Note
    The characters in substring should occur continiously in original string. This is different with subsequnce.
    
    Example
    Given A=“ABCD”, B=“CBCE”, return  2
    DP:
    D[i][j] 定义为:两个string的前i个和前j个字符串,尾部连到最后的最长子串。
    D[i][j] = 
    1. i = 0 || j = 0 : 0
    2. s1.char[i - 1] = s2.char[j - 1] ? D[i-1][j-1] + 1 : 0;
    另外,创建一个max的缓存,不段更新即可。
     1 public class Solution {
     2     /**
     3      * @param A, B: Two strings.
     4      * @return: The length of longest common subsequence of A and B.
     5      */
     6     public int longestCommonSubstring(String A, String B) {
     7         // write your code here
     8         int[][] res = new int[A.length()+1][B.length()+1];
     9         int result = 0;
    10         for (int i=0; i<=A.length(); i++) {
    11             for (int j=0; j<=B.length(); j++) {
    12                 if (i==0 || j==0) {
    13                     res[i][j] = 0;
    14                     continue;
    15                 }
    16                 if (A.charAt(i-1) != B.charAt(j-1)) res[i][j] = 0;
    17                 else res[i][j] = res[i-1][j-1]+1;
    18                 result = Math.max(result, res[i][j]);
    19             }
    20         }
    21         return result;
    22     }
    23 }
  • 相关阅读:
    codeforces 765 F Souvenirs 线段树+set
    codeforces 768 E 变形NIM博弈/手写sg函数
    BZOJ 1001 狼抓兔子(网络流)
    BZOJ 2957 楼房重建 (分块)
    CodeForces
    CodeForces
    HYSBZ
    SPOJ
    Codeforces-963 D Frequency of String
    中石油2019寒假集训第一场(新生场)(补题)
  • 原文地址:https://www.cnblogs.com/EdwardLiu/p/4323159.html
Copyright © 2020-2023  润新知