题解 | #最长回文子串#
最长回文子串
http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
class Solution {
public:
int getLongestPalindrome(string A, int n) {
// write code here
n = A.size();
if(n <= 1)
return n;
int dp[n+1][n+1];
int maxLen = 1;
for(int i = 0; i < n; i++)
{
dp[0][i] = 0;
dp[i][0] = 0;
}
string RA = "";
for(int i = n-1; i >= 0; i--)
{
RA += A[i];
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
if(A[j-1] == RA[i-1])
{
dp[i][j] = dp[i-1][j-1] + 1;
}
else
{
dp[i][j] = 0;
}
// maxLen = maxLen < dp[i][j] ? dp[i][j] : maxLen;
if(maxLen < dp[i][j] && i + j - dp[i][j] == n)
{
maxLen = dp[i][j];
cout << "dp[" << i << "][" << j << "] = " << dp[i][j] << endl;
}
}
}
return maxLen;
}
};