Example #1
0
char* longestPalindrome(char* s)
{
    int i;
    int index, Max = 1, Start = 0, End = 0;
//    char* str = s;

    if (s == NULL)
    {
        return NULL;
    }
/*虽然长度为奇数和偶数,但是可以通过确定最长回文字符串的首位和末位从而可以将回文字符串提取出来*/
    for(i = 0; s[i]; i++)
    {
        index = findOdd(s, i);
        if(Max < (2 * (index - i) + 1))
        {
            Max = 2 * (index - i) + 1;
            Start = 2 * i - index;
            End = index;
        }
        index = findEven(s, i);
        if(Max < (2 * (index - i)))
        {
            Max = 2 * (index - i);
            Start = 2 * i - index + 1;
            End = index;
        }

    }
    s[End + 1] = 0;
    return s + Start;
}
Example #2
0
 string longestPalindrome(string s) {
     int Max=1,Maxf=0,Maxe=0;
     for(int i=0; i<s.size(); i++) {
         int end = findOdd(s,i);
         if(Max < (end-i)*2+1) {
             Max = (end-i)*2+1;
             Maxf=i+i-end;
             Maxe=end;
         }
         end = findEven(s,i);
         if(Max <(end-i)*2) {
             Max = (end-i)*2;
             Maxf=i+i+1-end;
             Maxe=end;
         }
     }
     return s.substr(Maxf,Max);
 }