#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