- //找出多个字符串中的最大公共子字符串,如“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");
-
- }
复制代码 |
|