typedef struct pal_pos {
char* str;
int size;
} palindrome;
void is_pal(char* str, int i, int n, palindrome* p) {
char* sstr = strndup(str + i, n - i);
int sz = n - i;
int pivot = sz / 2 + (sz % 2);
int j;
for (j = 0; j < pivot; j++)
if (sstr[j] != sstr[sz - j - 1])
return;
p->str = (char*)realloc(p->str, sz);
p->str = sstr;
p->size = sz;
}
int main(int argc, char** argv) {
char* str;
palindrome* p = (palindrome*) malloc(sizeof(palindrome));
int sz;
if (argc <= 1) {
printf("need one parameter");
return -1;
}
sz = strlen(argv[1]);
str = (char*) malloc(sizeof(strlen(argv[1])));
str = strndup(argv[1], strlen(argv[1]));
p->str = (char*) calloc(0, 1);
p->size = 0;
int n, i;
for (n = 0; n < sz; n++)
for (i = 0; n - i > p->size; i++) {
is_pal(str, i, n, p);
}
fprintf(stdout, "The longuest palindrome is %s \n", p->str);
free(p->str);
free(p);
return 0;
}