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串是回文
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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); } };