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 2DP: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 }
新闻热点
疑难解答