题解 | #最长回文子串#

最长回文子串

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

class Solution {
public:
    int getLongestPalindrome(string A, int n) {
        // write code here
        int m = A.size();
        int maxlen = 1;
        if (m < 2) {
            return 1;
        }
        vector<vector<bool>> dp(m, vector<bool> (m));
        for(int i=0; i<m;i++){
            dp[i][i] = true;
        }
        for (int L = 2; L <= m; L++){
            for(int i = 0; i < n; i++){
                int j = L + i -1;
                if (j>=n){
                    break;
                }
                if (A[i] != A[j]){
                    dp[i][j] = false;
                } else {
                    if (j - i<3){
                        dp[i][j] = true;
                    }
                    else{
                        dp[i][j] = dp[i+1][j-1];
                    }
                }
                if(dp[i][j] && j-i+1 > maxlen){
                    maxlen = j-i+1;
                }


            }

        }
        return maxlen;
    }
};
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务