Longest Common Substring
Source
Given two strings, find the longest common substring.
Return the length of it.
Example
Given A = "ABCD", B = "CBCE", return 2.
Note
The characters in substring should occur continuously
in original string. This is different with subsequence.
Challenge
O(n x m) time and memory.
Java
public class Solution {
public int longestCommonSubstring(String A, String B) {
if (A == null || A.length() == 0 || B == null || B.length() == 0) {
return 0;
}
int[][] dp = new int[A.length() + 1][B.length() + 1];
int lcs = 0;
for (int i = 1; i <= A.length(); i++) {
for (int j = 1; j <= B.length(); j++) {
if (A.charAt(i - 1) == B.charAt(j - 1)) {
dp[i][j] = dp[i - 1][j - 1] + 1;
}
lcs = Math.max(lcs, dp[i][j]);
}
}
return lcs;
}
}
Reference
Longest Common Substring