求一個字串當中的最長重複子串
阿新 • • 發佈:2019-01-08
#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