1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| class Solution { public: string longestPalindrome(string s) { int st = 0, L = 1; int len = s.size(); bool dp[1100][1100]; for(int i = 0; i < len; i ++) dp[i][i] = 1; for(int i = 2; i <= len; i ++) { for(int j = 0; j + i - 1 < len; j ++) { int k = j + i - 1; if(s[j] != s[k]) dp[j][k] = 0; else { if(i <= 3) dp[j][k] = 1; else dp[j][k] = dp[j+1][k-1]; } if(dp[j][k]) st = j, L = i; } } return s.substr(st, L); } };
|