一、题目:
描述
给定两个只包含小写字母的字符串,计算两个字符串的最大公共子串的长度。
注:子串的定义指一个字符串删掉其部分前缀和后缀(也可以不删)后形成的字符串。
输入描述:
输入两个只包含小写字母的字符串
输出描述:
输出一个整数,代表最大公共子串的长度
二、输入输出示例:

三、代码:
#include<iostream>
using namespace std;
#include<string>
#include<vector>
int main()
{
string s1,s2;
cin>>s1>>s2;
int f[s1.size()+1][s2.size()+1];
for(int i=0;i<=s1.size();i++){
f[i][0] = 0;
}
for(int j=0;j<=s2.size();j++){
f[0][j] = 0;
}
int max = 0;
for(int i=1;i<=s1.size();i++){
for(int j=1;j<=s2.size();j++){
if(s1[i-1] == s2[j-1]){
f[i][j] = f[i-1][j-1] + 1;
if(f[i][j] > max){
max = f[i][j];
}
}
else{
f[i][j] = 0;
}
}
}
cout<<max<<endl;
system("pause");
return 0;
}