求两个字符串的最大公共子串

Posted 金色省略号的个人博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求两个字符串的最大公共子串相关的知识,希望对你有一定的参考价值。

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 void substr(char *s1, char *s2)
 5 {    
 6     /*    1.设长串开始位置 p, 最大匹配串开始 结束位置 maxStart, maxEnd*/                
 7     char *p = s1, *maxStart = s1, *maxEnd = s1;
 8     char *q = s2; /*  设短串*/
 9     
10     if(strlen(s1)<strlen(s2))/*    判断长串 短串, 更新指针*/
11     {
12         p = s2,q = s1;
13         maxStart = maxStart = s2;
14     }
15     
16     char *qt = q;  /*  保存短串开始位置*/
17     
18     /*     2.计算最大匹配串 */
19     while(*p++) /*  长串*/
20     {
21         q = qt;  /*  短串开始位置*/
22         while(*q++)/*短串指针后移匹配*/
23         {
24             char *pt = p; /*  保存长串指针位置*/            
25             while(*p == *q && *q)/*  一旦匹配, 长短串指针都后移*/            
26             {   
27                 p++,q++;
28             }
29             
30             if((p-pt) > (maxEnd-maxStart))/* 更新最大匹配串指针*/
31             {
32                 maxStart= pt;
33                 maxEnd = p;
34             }           
35         }
36     }
37     /* 打印最大匹配串 */
38     while(maxEnd>maxStart)
39     {
40         printf("%c",*maxStart++);
41     }    
42 }
43 int main()
44 {
45     char str1[100] = "fffaabcdeeeeeyyyyy";
46     char str2[100] = "fqbcabcmxxabcdnn";
47     substr(str1, str2);
48     return 0;
49 }

 

以上是关于求两个字符串的最大公共子串的主要内容,如果未能解决你的问题,请参考以下文章

求两个字符串的最大公共子串

求两个输入的字符串的最长公共子串

求两个字符串的公共子串的最大长度

请帮忙///如何计算两个 字符串的最长公共子串

算法场景应用:求两个字符串有多少公共子串?

java求最大公共子串