#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
char* longestPalindrome(char* s) {
if(n <= 1)
return s ;
int i, j, l ;
bool table[1000][1000] ;
for(i = 0 ; i < n ; i++)
table[i][i] = true ;
int start = 0, maxLength = 1 ;
for(l = 2 ; l <= n ; l++) {
for(i = 0 ; i < n-l+1 ; i++) {
j = i+l-1 ;
if(l == 2) {
if(s[i] == s[j]) {
table[i][j] = true ;
start = i ;
maxLength = 2 ;
}
}
else {
if(table[i+1][j-1] && (s[i] == s[j]) ) {
table[i][j] = true ;
if(l > maxLength) {
start = i ;
maxLength = l ;
}
}
}
}
}
char *pal
= (char *)malloc((maxLength
+1) * sizeof(char) ) ; for(i = start, j = 0 ; i <= start + maxLength - 1 ; i++, j++)
pal[j] = s[i] ;
pal[j] = '\0' ;
return pal ;
}
int main() {
char str[] = "aaabaaaa" ;
char *s = longestPalindrome(str) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8c3RkYm9vbC5oPgoKY2hhciogbG9uZ2VzdFBhbGluZHJvbWUoY2hhciogcykgewogICAgaW50IG4gPSBzdHJsZW4ocykgOwogICAgaWYobiA8PSAxKQogICAgICAgcmV0dXJuIHMgOwogICAgaW50IGksIGosIGwgOwogICAgYm9vbCB0YWJsZVsxMDAwXVsxMDAwXSA7CiAgICBmb3IoaSA9IDAgOyBpIDwgbiA7IGkrKykKICAgICAgIHRhYmxlW2ldW2ldID0gdHJ1ZSA7CiAgICBpbnQgc3RhcnQgPSAwLCBtYXhMZW5ndGggPSAxIDsKCiAgICBmb3IobCA9IDIgOyBsIDw9IG4gOyBsKyspIHsKICAgICAgICBmb3IoaSA9IDAgOyBpIDwgbi1sKzEgOyBpKyspIHsKICAgICAgICAgICAgaiA9IGkrbC0xIDsKICAgICAgICAgICAgaWYobCA9PSAyKSB7CiAgICAgICAgICAgICAgICBpZihzW2ldID09IHNbal0pIHsKICAgICAgICAgICAgICAgICAgICB0YWJsZVtpXVtqXSA9IHRydWUgOwogICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gaSA7CiAgICAgICAgICAgICAgICAgICAgbWF4TGVuZ3RoID0gMiA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZih0YWJsZVtpKzFdW2otMV0gJiYgKHNbaV0gPT0gc1tqXSkgKSB7CiAgICAgICAgICAgICAgICAgICAgdGFibGVbaV1bal0gPSB0cnVlIDsKICAgICAgICAgICAgICAgICAgICBpZihsID4gbWF4TGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gaSA7CiAgICAgICAgICAgICAgICAgICAgICAgIG1heExlbmd0aCA9IGwgOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGNoYXIgKnBhbCA9IChjaGFyICopbWFsbG9jKChtYXhMZW5ndGgrMSkgKiBzaXplb2YoY2hhcikgKSA7CiAgICBmb3IoaSA9IHN0YXJ0LCBqID0gMCA7IGkgPD0gc3RhcnQgKyBtYXhMZW5ndGggLSAxIDsgaSsrLCBqKyspCiAgICAgICBwYWxbal0gPSBzW2ldIDsKICAgIHBhbFtqXSA9ICdcMCcgOwogICAgcmV0dXJuIHBhbCA7Cn0KCmludCBtYWluKCkgewogICAgY2hhciBzdHJbXSA9ICJhYWFiYWFhYSIgOwogICAgY2hhciAqcyA9ICBsb25nZXN0UGFsaW5kcm9tZShzdHIpIDsKICAgIHByaW50ZigiJXMiLHMpIDsKICAgIHJldHVybiAwIDsKfQ==