int findLongest(string A, string B)
{
int n=A.size();
int m=B.size();
//相当于生成一个二维数组int dp[n][m];
vector<vector<int>> dp(n + 1, vector<int>(m + 1, 0));
int max = -1;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (A[i] == B[j])
{
dp[i + 1][j + 1] = dp[i][j] + 1;
if (dp[i + 1][j + 1] > max)
{
max = dp[i + 1][j + 1];
}
}
}
}
return max;
}
O(n)
O(m)
O(n+m)
O(n*m)