求一个字符串当中的最长重复子串

来源:互联网 发布:淘宝sku图片尺寸大小 编辑:程序博客网 时间:2024/05/17 23:16
  #include<stdio.h>  #include<string.h>/* 最长重复子串 Longest Repeat Substring */int maxlen;    /* 记录最长重复子串长度 */int maxindex;  /* 记录最长重复子串的起始位置 *//* 最长重复子串 基本算法 */int judge(char * p, char * q){    int len = 0;    while(*p && *q && *p++ == *q++)    {        ++len;    }    return len;}void getStr(char * arr, int size){    for(int i = 0; i < size; ++i)    {        for(int j = i+1; j < size; ++j)        {            //传送地址给指针            int len = judge(&arr[i],&arr[j]);            if(len > maxlen)            {                maxlen = len;                maxindex = i;            }        }    }}int main(){    char str[] = "abcabc";    getStr(str,strlen(str));    printf("%d,%d\n",maxlen,maxindex);    for(int i=maxindex;i<maxlen;i++)    {        putchar(str[i]);    }}

这里有更加优秀的解法,

不过这个解法似乎足够了

http://dsqiu.iteye.com/blog/1701324

0 0
原创粉丝点击