5. Longest Palindromic Substring

来源:互联网 发布:网络环境是指什么意思 编辑:程序博客网 时间:2024/06/05 23:00
<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

0 0