C语言求两个字符串的最长公共子串
本文实例讲述了C语言求两个字符串的最长公共子串的方法。分享给大家供大家参考。具体实现方法如下:
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
voidgetCommon(charstr1[],charstr2[],char*str3);
intstringLength(char*str);
voidmain(){
charstr1[50];
charstr2[50];
charstr3[50];
gets(str1);
gets(str2);
getCommon(str1,str2,str3);
printf("%s\n",str3);
//printf("%d\n",stringLength(str2));
}
intstringLength(char*str){
intlen=0;
while(*str!='\0'){
len++;
str++;
}
returnlen;
}
voidgetCommon(charstr1[],charstr2[],char*str3){
intlen1,len2;
inti,j,k;
intmax=0;
intstart=-1;
len1=stringLength(str1);
len2=stringLength(str2);
for(i=0;i<len1;i++){
for(j=0;j<len2;j++){
if(str1[i]==str2[j]){
for(k=0;(str1[i+k]==str2[j+k]&&str1[i+k]!='\0');k++);
if(max<k){
max=k;
start=i;
}
}
}
}
if(start==-1){
str3[0]='\0';;
}else{
memcpy(str3,&str1[start],max);
str3[max]='\0';
}
}
希望本文所述对大家的C语言程序设计有所帮助。