利用动态规划
参考 http://www.cnblogs.com/tenosdoit/p/3675788.html
代码
class Solution {
public:
string longestPalindrome(string s) {
int length = s.length();
if(length<=1)
return s;
bool flag[length][length];
memset(flag, 0, sizeof(flag));
int left = 0;
int right = 0;
flag[0][0] = true;
for(int i = 1; i < length; ++i)
{
flag[i][i] = true;
flag[i][i-1] = true;
}
for(int k = 2; k <= length; ++k)
for(int i = 0; i <= length-k; ++i)
{
if(s[i]==s[i+k-1]&&flag[i+1][i+k-2])
{
flag[i][i+k-1] = true;
if(right-left+1 < k)
{
left = i;
right = i+k-1;
}
}
}
return s.substr(left, right-left+1);
}
};