//寻找最长公共字符串
#include<stdio.h>
void max_com_str(char s[], char t[], char c[])
{
int index = 0, lenth = 0;
int ind = 0, len, i=0, j=0, m=0, n=0;
for(i=0; s[i]!='\0'; i++) //遍历第一个字符串
{
for(j=0; t[j]!='\0'; j++) //遍历第二个字符串
{
len = 0;
if(s[i] == t[j]) //如果检测到相同的字母出现
{
ind = i; //把第一个字符串那个字母的下标赋值给ind
len++; //len是公共字符串的长度,len自加 1
for(m=ind+1,n=j+1; s[m]!='\0'&&t[n]!='\0'; m++,n++) //开始循环,初始值m、n是 相同字符后面一位
{ //直到整个字符串结束
if(s[m] == t[n]) //如果检测到相同,就长度len加 1
len++;
else //一旦不同,立即停止,检查len
break;
}
if(len>lenth) //如果len比之前最大的lenth大,就把lenth赋值len
{
lenth = len;
index = ind; //下标index赋值ind
}
}
}
}
for(i = 0; i<lenth; i++) //将找到的最长公共字符串写到c字符串中
c[i] = s[index+i];
c[lenth] = '\0';
}
int main()
{
char arr1[20]= {'0'}, arr2[20] = {'0'}, arr[20] = {'0'};
char* p1 = arr1;
char* p2 = arr2;
scanf("%s",arr1);
scanf("%s",arr2);
max_com_str(p1, p2, arr); //我们传的是地址,所以可以被函数更改
printf("%s",arr);
return 0;
}
C语言基础:寻找最长公共字符串
最新推荐文章于 2024-07-07 15:28:32 发布