首页 > 学院 > 开发设计 > 正文

Lintcode: Longest Common Substring

2019-11-14 23:10:58
字体:
来源:转载
供稿:网友
Lintcode: Longest Common Substring
Given two strings, find the longest common substring.Return the length of it.NoteThe characters in substring should occur continiously in original string. This is different with subsequnce.ExampleGiven A=“ABCD”, B=“CBCE”, return  2
DP:D[i][j] 定义为:两个string的前i个和前j个字符串,尾部连到最后的最长子串。D[i][j] =1. i = 0 || j = 0 : 02. 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 }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表