我试图通过反转主弦来解决使用最长公共子串的最长回文子串问题 . 但我的算法未能通过以下示例:

“abadefdaba”的预期成果:aba但是我得到的输出是abad .

似乎我在我的程序中遗漏了一些条件:

string longestPalindrome(string A) 
{
    int **dp = new int*[A.length()+1];
    for(int i=0;i<=A.length();i++)
        dp[i] = new int[A.length()];
    string B = A;
    reverse(B.begin(), B.end());
    int res = INT_MIN;
    int max_i = INT_MIN;
    for(int i=0;i<= A.length();i++)
    {
        for(int j=0;j<=A.length();j++)
        {
            if(i==0 || j==0)
                dp[i][j] = 0;
            else if(A[i-1] != B[j-1])
                dp[i][j] = 0;
            else
            {
                dp[i][j] = 1 + dp[i-1][j-1];
                if(dp[i][j] > res)
                {
                    res = dp[i][j];
                    max_i = i;
                }
            }
        }
    }

    return A.substr(max_i-res,res);
}