您的位置:首页 > 其它

5. Longest Palindromic Substring

2016-06-22 11:31 239 查看
<pre style="box-sizing: border-box; overflow: auto; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; font-size: 13px; padding: 9.5px; margin-top: 0px; margin-bottom: 10px; line-height: 1.42857; color: rgb(51, 51, 51); word-break: break-all; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; widows: 1; background-color: rgb(245, 245, 245);">还有一种遍历中心的方法时间复杂度也为n方,还有一种为n的方法

class Solution {
public:
    string longestPalindrome(string s) {
        int length = s.length();
        if(length == 0 || length == 1) return s;
        vector<vector<int>> dp(length+5,vector<int>(length+5,0));
        dp[length-1][length-1]=1;
        int start = 0,max = 0;
        for(int i=0;i<length-1;i++){
            dp[i][i]=1;
            if(s[i]==s[i+1]) {
                dp[i][i+1]=1;
                start = i;
                max = 2;
            }
        }
        for(int j=2;j<length;j++){
            for(int i=0;i<=j;i++){
                if(s[i]==s[j]&&dp[i+1][j-1]){
                    if(j-i+1>max){
                        start = i;
                        max = j-i+1;
                    }
                    dp[i][j]=1;
                }
            }
        }
        for(int i=0;i<length;i++){
            for(int j=0;j<length;j++)
            cout<<dp[i][j];
            cout<<endl;
        }
        return s.substr(start,max);
    }
};



"abaas"


10100
01000
00110
00010
00001
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: