比如:str=bcacbcbcef,str2=deabcbced,则str和str2的最长公共子串为bcbce,最长公共子串长度为5
#include<stdio.h>
#include<string.h>
typedef struct str {
char array[100];
int top=0;
int length;
};
int main()
{
char str1[100], str2[100];
printf("请输入较长字符串s:");
gets_s(str1);
getchar;
printf("请输入较短字符串t:");
gets_s(str2);
int max = 0;
int i, j;
int len1 = strlen(str1);
int len2 = strlen(str2);
str stack[100];
int n = 0;
int MAX=0;
for (i = 0; i < len1; i++)
{
for (j = 0; j < len2; j++)
{
if (str1[i + j] == str2[j])
{
max++;
stack[n].array[stack[n].top] = str2[j];
stack[n].top++;
}
else
{
stack[n].array[stack[n].top] = '\0';
stack[n].length = max;
if (max > MAX)
MAX = max;
max = 0;
n ++;
}
}
}
printf("最长为%d\n最长公共子串为:", MAX);
for (int k = 0; k < n; k++)
{
if (stack[k].length == MAX)
puts(stack[k].array);
}
return 0;
}