求任意两个字符串的最大相同子串

c语言
# include<stdio.h>
#include<string.h>
int main(){
char a[100],b[100];
printf("s1=");
scanf("%s",a);
printf("s2=");
scanf("%s",b);
int i,j,k,maxlen=1,m;
for(i=0;i<strlen(a);i++){//i是a数组下标,j是b数组下标
for(j=0;j<strlen(b);j++){
if(a[i]==b[j]){
for(k=1;a[i+k]==b[j+k];k++);//k是相同串长度
if(k>maxlen) {
maxlen=k;//记录最大子串长度
m=i;//记录开始下标
}
}
}
}
int n=m;
for(n=m;n<m+maxlen;n++)//注意maxlen保留的才是最大长度
printf("%c",a[n]);
printf("\n");
return 0;
}

猜你喜欢

转载自blog.csdn.net/Z_Y_D_/article/details/57413269