问题描述:
求一个字符串的最长回文子串,返回这个子串。
这个题目适合用动态规划的方式求解:
代码实现:
string longestPalindrome(string s)
{
int size = s.size();
int dp[1000][1000] = {0};
int left = 0;
int right = 0;
int len = 0;
for(int j = 0; j < size; ++j)
{
for(int i = 0; i < j; ++i)
{
if(j - i < 2)
{
dp[i][j] = (s[i] == s[j]);
}
else
{
dp[i][j] = (s[i] == s[j]) && dp[i + 1][j - 1];
}
if(dp[i][j] && len < j - i + 1)
{
len = j - i + 1;
left = i;
right = j;
}
}//for
dp[j][j] = 1;
}//for
return s.substr(left, right - left + 1);
}