题解 | #公共子串计算#
公共子串计算
https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b
//https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b?tpId=37&rp=1&ru=%2Fexam%2Foj%2Fta&qru=%2Fexam%2Foj%2Fta&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26pageSize%3D50%26search%3D91%26tpId%3D37%26type%3D37&difficulty=&judgeStatus=&tags=&title=75&gioEnter=menu #include <iostream> #include <string.h> using namespace std; int main() { string s1,s2; while(cin >> s1 >> s2){ int size1 = s1.size(); int size2 = s2.size(); int dp[size1][size2]; int maxnum = 0; memset(dp, 0, sizeof(dp)); for(int i = 0;i<size1;i++) for(int j = 0;j<size2;j++) if(s1[i]==s2[j]){ if(i==0||j==0) dp[i][j] = 1; else dp[i][j] = 1+dp[i-1][j-1]; maxnum = max(maxnum, dp[i][j]); } cout << maxnum; } }