自己編寫了很久都沒寫出來,求大神共享一下代碼,就是給定兩個字符串,求最大的公共子串,新手
剛才那個有點錯漏
#include <stdio.h>
#include <string.h>
void getMaxCommonSubstring(char*,char*);
int main(){
char str1[1000],str2[1000];
scanf("%s",str1);
scanf("%s",str2);
getMaxCommonSubstring(str1,str2);
return 0;
}
//得到兩個字符串的最大公共子串並輸出
//如果有多個最大子串只輸出第一個
void getMaxCommonSubstring(char* str1,char* str2){
int len1 = strlen(str1);
int len2 = strlen(str2);
//保存最大字符串及其長度
int maxLen = 0;
char maxStr[1000]={0};
//對str1和str2進行遍歷
int i,j,k;
for(i=0;i<len1;i++){
for(j=0;j<len2;j++){
//如果某個字符相同,則繼續看後面最多有幾個相同
if(str1[i]==str2[j]){
//保存已匹配的字符串及其長度
int len = 1;
char buff[1000]={0};
buff[0]=str2[j];
//對後面的字符遍歷
for(k=1;i+k<len1&&j+k<len2;k++){
//字符不相同則跳出
if(str1[i+k]!=str2[j+k])break;
buff[len++]=str2[j+k];
}
//如果匹配的字符串比原來的最大字符串更大,則拷貝到最大字符串
if(len>maxLen){
maxLen=len;
strcpy(maxStr,buff);
}
}
}
}
printf("MaxCommonSubstring:\n%s\nlength:%d\n",maxStr,maxLen);
}