最长回文子串,存在O(n)的算法,Manacher’s Algorithm
暂时还不会T_T,先用平方的算法做把,反正最长是1000
f[i][j]表示,i..j这段是否是回文串
那么 f[i][j] = true i = j
s[i] == s[j] i + 1 = j
s[i] == s[j] && f[i + 1] [j - 1] i < j
class Solution { public: string longestPalindrome(string s) { // Note: The Solution object is instantiated only once and is reused by each test case. if (s == "") return ""; int len = s.length(); bool f[len][len]; memset(f , false , sizeof(bool) * len * len); int maxLen = 1; int start = 0; for(int i = 0 ; i < len ; i++){ f[i][i] = true; for(int j = 0 ; j < i ; j++){ f[j][i] = s[j] == s[i] && (i - j < 2 || f[j + 1][i - 1]); if(f[j][i] && i - j + 1 > maxLen){ maxLen = i - j + 1; start = j; } } } return s.substr(start , maxLen); } };