黑马程序员技术交流社区
标题:
如何求出多个字符串的公共子串
[打印本页]
作者:
keycola
时间:
2014-12-10 15:26
标题:
如何求出多个字符串的公共子串
如何求出多个字符串的公共子串
如 abcdef
defkg
公共子串就是 def
作者:
young_star
时间:
2014-12-10 15:37
#include<stdio.h>
#include<string.h>
void main()
{
char a[500],b[500];
int array[500][500];
int aLen,bLen;
int i,j,max,m,n;
printf("请输入第一个字符串:");
while(scanf("%s",&a)!=EOF) //如果成功
{
printf("请输入第二个字符串:");
scanf("%s",&b);
aLen=strlen(a);
bLen=strlen(b);
for(i=0;i<bLen+1;i++)
array[i][0]=0;
for(i=0;i<aLen+1;i++)
array[0][i]=0;
for(i=1;i<=aLen;i++) //二维数组赋值
{
for(j=1;j<=bLen;j++) //i行j列
{
if(a[i-1]==b[j-1])
{
array[i][j]=array[i-1][j-1]+1;
}
else
{
array[i][j]=0;
}
}
}
//输出公共字符串
max=array[0][0];
for(i=1;i<=aLen;i++)
{
for(j=1;j<=bLen;j++)
{
if(max<array[i][j])
{
max=array[i][j];
m=i;
n=j;
}
}
}
//printf("重复最大个数max:%d 行下标m: %d 列下标n:%d",max,m,n);
printf("最大子串为:");
for(i=m-max;i<m;i++)
{
printf("%c",a[i]);
}
printf("\n");
}
}
复制代码
作者:
arui12580
时间:
2014-12-10 15:49
那个,这是LCS算法问题。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2