码迷,mamicode.com
首页 > 其他好文 > 详细

Lintcode: Longest Common Substring

时间:2015-03-09 12:17:48      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:

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 }

 

Lintcode: Longest Common Substring

标签:

原文地址:http://www.cnblogs.com/EdwardLiu/p/4323159.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!