Longest Palindromic Substring

来源:互联网 发布:迅龙恢复软件注册码 编辑:程序博客网 时间:2024/06/08 13:11

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
这里写图片描述

string longestPalindrome(string s)    {        int n = s.length();        if (n == 0) return "^$";        string T = "^";        for (int i = 0; i < n; i++)        {            T += "#";            T += s[i];        }        T += "#$";        n = T.length();        int *P = new int[n];        int maxRight = 0;        int pos = 0;        for (int i = 1; i < n - 1; i++)        {            if (maxRight>i)            {                P[i] = min(maxRight - 1, P[2 * pos - i]);            }            else            {                P[i] = 0;            }            while (T[i + 1 + P[i]] == T[i - 1 - P[i]])                P[i]++;            if ( i+P[i] > maxRight)            {                pos = i;                maxRight = i + P[i];            }        }        int maxLen = 0;        int centerIndex = 0;        for (int i = 0; i < n - 1; i++)        {            if (P[i]>maxLen)            {                maxLen = P[i];                centerIndex = i;            }        }        delete[] P;        cout << maxLen << endl;        return s.substr((centerIndex - 1 - maxLen) / 2, maxLen);    }
0 0
原创粉丝点击