zoukankan      html  css  js  c++  java
  • 求两个字符串的最大公共子串

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 void substr(char *s1, char *s2)
     5 {     
     6      /*    1.设长串开始位置 i, 最大匹配串开始 结束位置 maxStart, maxEnd*/                
     7     char *i = s1, *maxStart = s1, *maxEnd = s1;
     8     char *j = s2; /*  设短串*/
     9     
    10     if(strlen(s1)<strlen(s2))/*    判断长串 短串, 更新指针*/
    11     {
    12         i = maxStart = maxStart = s2;
    13         j = s1;       
    14     }
    15     
    16     char *jt = j;  /*  保存短串开始位置*/
    17     
    18     /*     2.计算最大匹配串 */
    19     for(; *i; i++)/*  长串*/
    20     {      
    21         for(j = jt; *j; j++)/*  短串*/
    22         {
    23             char *indexStart = i,*indexEnd = i;
    24             char *q = j;
    25 
    26             while(*indexEnd == *q && *q)/*  一旦匹配, 长短串指针都后移*/   
    27             {              
    28                 indexEnd++;
    29                 q++;            
    30             }
    31 
    32             if(indexEnd-indexStart > maxEnd-maxStart)/* 更新最大匹配串指针*/
    33             {
    34                maxEnd = indexEnd;
    35                maxStart = indexStart;
    36             }       
    37         }
    38     }
    39     /* 打印最大匹配串 */
    40     while(maxEnd>maxStart)
    41     {
    42         printf("%c",*maxStart++);
    43     }    
    44 } 
    45 
    46 int main()
    47 {
    48     char str1[100] = "abcdfffaebceeeeyyyyy";
    49     char str2[100] = "abcdfqbcabcmxxnn";
    50     substr(str1, str2);
    51     return 0;
    52 }
  • 相关阅读:
    sudo 做不到的事
    Oracle 用户操作表权限
    CentOS7.2 使用Shell安装Oracle12c
    package-cleanup
    glibc-commons 依赖解析 版本错误,xxx is duplicate yyy
    Centos7.2 编译安装方式搭建 phpMyAdmin
    Jenkins 环境搭建
    awk 使用案例
    Linux文件系统
    用python写一个计算器
  • 原文地址:https://www.cnblogs.com/GoldenEllipsis/p/11605359.html
Copyright © 2011-2022 走看看