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语言程序设计有所帮助。