欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

求最大公共子串

程序员文章站 2022-03-04 19:37:04
...

一、代码

//最大公共子串
#include <stdio.h>
#include <string.h>
void main(){
	char s1[88],s2[88];
	printf("s1=");
	scanf("%s",&s1);
	printf("\n");
	printf("s2=");
	scanf("%s",&s2);
	int l1=strlen(s1),l2=strlen(s2);
	int i,j,k;
	int maxpos=-1;
	int maxlen=0;
	int x=-1;
	for(i=0;i<l1;i++)
		for(j=0;j<l2;j++){
			if(s1[i]==s2[j]){
				x=i;
				for(k=1;(s1[i+k]==s2[j+k])&&(s1[i+k]!='\0')&&(s2[j+k]!='\0');k++){
					if(k>maxlen){
						maxlen=k;
						maxpos=i;
					}
				}
			}
		}
		if(maxpos==-1){
			if(x==-1)
			printf("没有最大公共子串");
			else 
				printf("%c",s1[x]);
		}
		else{
		for(i=maxpos;i<=maxpos+maxlen;i++)
			printf("%c",s1[i]);
		}
		printf("\n");
}

二、结果

求最大公共子串

相关标签: C语言