Итак, я хочу создать функцию, используя C, чтобы найти самую длинную повторяющуюся не перекрывающуюся подстроку в данной строке. Например: ввод банана. Вывод:
Я думал об использовании массива строки и проверке повторов. Это жизнеспособный подход? Как бы я мог сравнить подстроки с остальными строками. Я хочу по возможности избегать суффиксных деревьев
#include <stdio.h>
#include <string.h>
void stringcheck(char a[],int len, int s1, int s2)
{
int i=s1+1;
int j=s2+1;
if(j<=len&&a[i]==a[j])
{
printf("%c",a[i]);
stringcheck(a,len,i,j);
}
}
void dupcheck(char a[], int len, int start)
{
for(int i=start;i<len-1;i++)
{
for(int j=i+1;j<=len;j++)
{
if(a[i]==a[j])
{
printf("%c",a[i]);
stringcheck(a,len,i,j);
i=len;
}
}
}
}
int main()
{
char input[99];
scanf("%s",input);
int start=0;
int len =strlen(input);
dupcheck(input,len,start);
return 0;
}