//找出多个字符串中的最大公共子字符串,如“nbitheimanb”和“itheia”的最大子串是:”ithei”。(C语言)
#include <stdio.h>
#include <string.h>
int main()
{
char *s1 = "nbitheimanbcf";
char *s2 = "itheia";
void maxPublicString(char *s1,char *s2);
maxPublicString(s2,s1);
return 0;
}
void maxPublicString(char *s1,char *s2)
{
//分别求出s1,s2字符串的长度
int s1len = strlen(s1);
int s2len = strlen(s2);
//记录相同元素下标,记录相同的元素个数
int index = 0 ,count = 0;
//遍历s1
for(int i = 0; i<s1len ; i++)
{
//遍历s2
for(int j = 0; j<s2len; j++)
{
//取出s2的每一个元素s1进行比较,
if(s1[i]==s2[j])
{
//如果有相同的元素,则同时都往后面移动
for(int k = 1 ;s1[i+k]==s2[j+k] && s2[j+k]!='\0' && s1[i+k]!='\0' ;k++)
{
//选出最大公共字符串
if(k>count)
{
//记录最大公共字符串长度的下标
count =k;
//记录最大公共字符串长度的个数
index = i;
}
}
}
}
}
if(count == 0)
{
printf("没有找到最大公共子串\n");
}
else
{
printf("最长公共字串是:");
for(int i = 0 ; i<=count; i++)
{
printf("%c",s1[index+i]);
}
}
printf("\n");
} |
|