zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    java修改应用程序标题栏
    电动双轮车
    Oracle执行计划相关(待补充)
    SQL中IN和EXISTS用法的区别
    union all与union all
    equals与hashcode
    文件上传的整个流程
    adwords与adsence
    struts2文件上传大小
    为什么是UUID做主键
  • 原文地址:https://www.cnblogs.com/EdwardLiu/p/4323159.html
Copyright © 2011-2022 走看看