#include <vector> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param A string字符串 * @return int整型 */ bool IsValid(string str){ if(str.empty()||str.size()==1) return true; int n= str.size(); int len = n/2; for(int i=0;i<len;i++){ if(str.at(i)!=str.at(n-i-1)) return false; } return true; } int getLongestPalindrome(string A) { // write code here if(A.empty()) return 0; if(A.size()==1) return 1; int n=A.size(); int max_len=1; vector<vector<bool >> dp(n,vector<bool >(n,false)); for(int i=1;i<n;i++) dp[i][i]=true; for(int i=1;i<n;i++)for(int j=i-1;j>=0;j--){ if(A.at(i)!=A.at(j)) dp[i][i]=false; else { if(i-j-1<=1) dp[i][j]=true; else dp[i][j]=dp[i-1][j+1]; if(dp[i][j]==true) max_len = max(max_len,i-j+1); } } return max_len; } }; // #include <vector> // class Solution { // public: // /** // * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 // * // * // * @param A string字符串 // * @return int整型 // */ // bool IsValid(string str){ // if(str.empty()||str.size()==1) return true; // int n= str.size(); // int len = n/2; // for(int i=0;i<len;i++){ // if(str.at(i)!=str.at(n-i-1)) return false; // } // return true; // } // int getLongestPalindrome(string A) { // // write code here // if(A.empty()) return 0; // if(A.size()==1) return 1; // int n=A.size(); // int res=1; // int tmp_len = 0; // vector<int > dp(n,1); // for(int i=1;i<n;i++){ // tmp_len = 0; // for(int j=0;j<i;j++){ // string tmp_str = A.substr(j,i-j+1); // if(IsValid(tmp_str)) {tmp_len = max(tmp_len,i-j+1);res = max(res,tmp_len);} // } // } // return res; // } // };