LeetCode-Longest Palindromic Substring

Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.

通过动归,每次i,j终点的串是回文需要s[i]==s[j]且i+1,j-1串是回文

class Solution {
public:
    string longestPalindrome(string s) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        if(s.length()==0)return "";
        vector<vector<bool> > ISP;
        vector<bool> one;
        one.resize(s.length(),false);
        ISP.resize(s.length(),one);
        int len=1;
        int start=0;
        for(int i=0;i<s.length();i++){
            ISP[i][i]=true;
        }
        for(int i=1;i<s.length();i++){
            if(s[i-1]==s[i])
            {
                ISP[i-1][i]=true;
                start=i-1;
                len=2;
            }
        }
        for(int j=2;j<s.length();j++){
            for(int i=0;i+j<s.length();i++){
                if(s[i]==s[i+j]&&ISP[i+1][i+j-1])
                {
                    ISP[i][i+j]=true;
                    len=j+1;
                    start=i;
                }
            }
        }
        return s.substr(start,len);
    }
};
O(n^2)

 

posted @ 2013-09-14 22:38  懒猫欣  阅读(169)  评论(0编辑  收藏  举报