题解 | #公共子串计算#
公共子串计算
https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b
#include <iostream>
using namespace std;
int main() {
// dp[i][j]: s1[0..i)以s[i-1]结尾, s2[0..j)以s[j-1]结尾的LCS
int dp[151][151] = {0};
int max_len = 0;
string s1, s2;
cin >> s1 >> s2;
int len1 = s1.size(), len2 = s2.size();
// dp[x][0]与dp[0][x]必然为0 (按照定义是空串)
for(int i = 1; i <= len1; ++i)
{
for(int j = 1; j <= len2; ++j)
{
dp[i][j] = s1[i-1] == s2[j-1] ? dp[i-1][j-1] + 1 : 0;
max_len = max(max_len, dp[i][j]);
}
}
printf("%d", max_len);
}
查看30道真题和解析