Lintcode-最长回文子串

问题描述:

给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串。


image.png

问题分析:

中心扩展法
如果是一个回文序列,那么以这个序列中心字符展开的前缀和后缀都是一样的,因此,我们可以枚举中心位置,然后再在这个位置上扩展。记录并且更新得到最长的回文长度。

示例代码:

class Solution {
public:
    /**
     * @param s input string
     * @return the longest palindromic substring
     */
    string longestPalindrome(string& s) {
        // Write your code here
         static int flag=0,legth=0;
 int c=0,max=0,i,j;
        int n=s.size();
        if(s.size()==0) return 0;
        for(i=0;i=0&&(i+j)max)
                {
                    max=c;
                    flag=i;
                    legth=j-1;
                }
            for(j=0;i-j>=0&&(i+j+1)max)
            {
                    legth=j-1;
                    max=c;
                    flag=i;
            }
        }
        string res;
        for(int t=flag-legth;t

你可能感兴趣的:(Lintcode-最长回文子串)