求最大公共子串
程序员文章站
2022-03-04 19:37:04
...
一、代码
//最大公共子串
#include <stdio.h>
#include <string.h>
void main(){
char s1[88],s2[88];
printf("s1=");
scanf("%s",&s1);
printf("\n");
printf("s2=");
scanf("%s",&s2);
int l1=strlen(s1),l2=strlen(s2);
int i,j,k;
int maxpos=-1;
int maxlen=0;
int x=-1;
for(i=0;i<l1;i++)
for(j=0;j<l2;j++){
if(s1[i]==s2[j]){
x=i;
for(k=1;(s1[i+k]==s2[j+k])&&(s1[i+k]!='\0')&&(s2[j+k]!='\0');k++){
if(k>maxlen){
maxlen=k;
maxpos=i;
}
}
}
}
if(maxpos==-1){
if(x==-1)
printf("没有最大公共子串");
else
printf("%c",s1[x]);
}
else{
for(i=maxpos;i<=maxpos+maxlen;i++)
printf("%c",s1[i]);
}
printf("\n");
}
二、结果
上一篇: 求N以内的素数
下一篇: C语言中的堆与malloc和free