求两个字符串的最长公共子串长度。
输入格式:
输入长度≤100的两个字符串S和T
输出格式:
输出两个字符串的最长公共子串长度
输入样例1:
ABCBDAB
BDCABA
输出样例1:
2
输入样例2:
ABACDEF
PGHIK
输出样例2:
0
代码:
#include<bits/stdc++.h>
using namespace std;
int main() {
char s[100], t[100];
cin>>s;
cin>>t;
int m = strlen(s);
int n = strlen(t);
int ss[100][100];
int max = 0;
int i=0, j=0;
for (i = 0; i < m; i++) { //给满足条件的ss[i][j]做标记
for (j = 0; j < n; j++) {
if (s[i] == t[j]) {
ss[i][j] = 1;
}
}
}
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
if (ss[i][j] != 0 && ss[i + 1][j + 1] != 0) {
ss[i + 1][j + 1] += ss[i][j]; //累积
if (ss[i + 1][j + 1] > max) {
max = ss[i + 1][j + 1];
}
}
}
}
cout << max;
}