
中心扩展法则
class Solution {
public:
string longestPalindrome(string s) {
int m = s.size();
if (m < 2) return s;
int maxlen =0 ;
int start = 0;
int end = 0;
for (int i = 0; i < m; i++)
{
int len1 = centerPariol(s, i, i);
int len2 = centerPariol(s, i, i + 1);
maxlen = max(len1, len2);
if (maxlen > end - start )
{
start = i - (maxlen-1) / 2;
end = i + maxlen / 2;
}
}
return s.substr(start,end-start+1);
}
int centerPariol(string s, int left, int right)
{
int N = s.size();
int i = left;
int j = right;
while (i >= 0 && j < N&&s[i]==s[j])
{
i--;
j++;
}
return j-i-1;
}
};
动态规划