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.
class Solution {
public:
/**
* @param A, B: Two string.
* @return: the length of the longest common substring.
*/
int longestCommonSubstring(string &A, string &B) {
// write your code here
int sizeA = A.size();
int sizeB = B.size();
int max_len = 0;
for (int i=0; i<sizeA; i++)
{
int cur_i = i;
int cur_len = 0;
bool match = false;
for (int j=0; j<sizeB && cur_i<sizeA; j++)
{
if (A[cur_i] == B[j])
{
if (!match)
{
match = true;
cur_i = i+1;
cur_len = 1;
}
else
{
cur_i++;
cur_len++;
}
max_len = max(max_len, cur_len);
}
else if (A[cur_i] != B[j])
{
match = false;
cur_i = i;
cur_len = 0;
}
}
}
return max_len;
}
};