zoukankan      html  css  js  c++  java
  • 求两个字符串的最长连续子串

        // 编程实现:找出两个字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串为"cad"
        // 采用后缀数组,利用归并排序当中的思想。
        //
        class CMaxCommon:public CTest
        {
        public:
            static int com(const void *s1,const void *s2)
            {
                return strcmp(*(char**)s1,*(char **)s2);
            }
            int get(char *s1,char *s2,char *buf)
            {
                char *p=s1;
                while(*s1!=''&&*s2!=''&&*s1==*s2)
                {
                    *buf=*s1;
                    s1++;
                    s2++;
                    buf++;
                }
                *buf='';
                return s1-p;
            }
            void Test()
            {
                char str1[]="abccade";
                char str2[]="dgcadde";
                int len1=strlen(str1);
                int len2=strlen(str2);
                int i,j,k;
                char **pf1=new char*[len1];
                char **pf2=new char*[len2];
                
    
                for(i=0;i<len1;i++)
                {
                    pf1[i]=&str1[i];
                }
                for(i=0;i<len2;i++)
                    pf2[i]=&str2[i];
                qsort(pf1,len1,sizeof(char*),com); // 对后缀数组采用快速排序
                qsort(pf2,len2,sizeof(char*),com);
                k=i=j=0;
                int max=0;
                char *maxbuf=new char[100];
                char *buf=new char[100];
                while(i<len1&&j<len2)
                {
                    int t=get(pf1[i],pf2[j],buf);// 比较两个字符串,返回公共长度,并返回相同部分的字符串
                    if(t>max)
                    {
                        max=t;
                        strcpy(maxbuf,buf);
                    }
                    if(strcmp(pf1[i],pf2[j])<=0) // 比较两个字符串的大小
                    {
                        i++;
                    }
                    else
                        j++;
                }
                cout<<maxbuf<<endl; 
            }
        };
    
    };
  • 相关阅读:
    PHP cURL 应用
    CURL的学习和应用
    PHP中使用cURL实现Get和Post请求的方法
    免费的论文查重网站
    免费的论文查重网站
    初识MFC学习——Hello World
    N皇后问题--回溯法
    c/c++工程中外部头文件及库添加方法
    WinDriver&PCIE
    初识-----基于Socket的UDP和TCP编程及测试代码
  • 原文地址:https://www.cnblogs.com/dyc0113/p/3293532.html
Copyright © 2011-2022 走看看