char* longestPalindrome(char* s);
int main()
{
char s[10];
gets(s);
printf("%s",longestPalindrome( s));
return 0;
}
char* longestPalindrome(char* s)
{
int len = strlen(s);
if (len <= 1) { return s; }
int start = 0;
int maxlen = 0;
for (int i=1;i<len;i++)
{
//最长回文字符串长度为偶数时 即两个相邻的字符相同
int left=i-1;
int right=i;
while(left>=0&&right<len&&s[left]==s[right])
{
left--;
right++;
}
int size=right-left-1;
if (maxlen<size)
{
start=left+1;
maxlen=size;
}
//对于同一个i 如果其左右是回文的话 可能是上述的偶数情况,也可能是奇数情况,所以对同一个i再进行一次奇数情况的判断
left=i-1;
right=i+1;
while(left>=0&&right<len&&s[left]==s[right])
{
left--;
right++;
}
size=right-left-1;
if (maxlen<size)
{
start=left+1;
maxlen=size;
}
}
char *arr = (char *)malloc(sizeof(char) * maxlen+1 );
int i=0;
for ( i=0;i<maxlen;i++)
{
arr[i]=s[start++];
}
arr[i]='\0'
return arr;
}