题解 | #最长回文子串#

最长回文子串

http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af

题目
图片说明
题解:动态规划,以i为起点,j为终点的字符串是否为回文

class Solution {
public:
    int getLongestPalindrome(string A, int n) {
        // write code here
        //动态规划:以某个字符结尾的前面最大回文长度,dp[i][j]
        vector<vector<bool>>dp(n,vector<bool>(n,false));
        int res=0;
        for(int j=0;j<n;j++)//终点
        {
            for(int i=0;i<=j;i++)//起点
            {
                if(A[i]!=A[j])continue;
                else
                {
                    dp[i][j]=j-i>=2?dp[i+1][j-1]:true;//若起点终点两字符相同,则判断里面一层是否是回文
                    if(dp[i][j])res=max(res,j-i+1);//若是回文,更新最大长度
                }
            }
        }
        return res;
    }
};
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务