题目:
给定两个字符串,求出它们之间最长的相同子字符串的长度。
公共子串和公共子序列不同,公共子序列不要求连续,但公共子串必须是连续的。如:
A = “helloworld”
B = “loop”
A和B的最长公共子序列是"loo",但最长公共子串是"lo"
解题思路:
代码如下:
#include <iostream>
using namespace std;
string a, b;
const int N = 1010;
int dp[N][N];
int maxs = -1;int main() {cin >> a >> b;int len_a = a.length();int len_b = b.length();for (int i = 1; i <= len_a; i++)for (int j = 1; j <= len_b; j++) {if (a[i - 1] == b[j - 1])dp[i][j] = dp[i - 1][j - 1] + 1;elsedp[i][j] = 0;maxs = max(dp[i][j], maxs);}cout << maxs << endl;return 0;
}