5. 最長(zhǎng)回文子串

5. 最長(zhǎng)回文子串

先枚舉長(zhǎng)度len,再枚舉起始位置i
只能是連續(xù)子串能這樣遍歷。
最長(zhǎng)回文子序列還是要狀態(tài)轉(zhuǎn)移

暴力

從中間向兩邊擴(kuò)散

class Solution {
public:
    string longestPalindrome(string s) {
        int len=0;
        string res;
        for(int k=0;k<s.size();k++){
            int i=k,j=k+1;
            while(i>=0 && j<s.size() && s[i]==s[j] )i--,j++;
            if(j-i-1>len){
                len=j-i-1;
                res=s.substr(i+1,len);
            }
            
            i=k-1,j=k+1;
            while(i>=0 && j<s.size() && s[i]==s[j] )i--,j++;
            if(j-i-1>len){
                len=j-i-1;
                res=s.substr(i+1,len);
            }
        }
        return res;
    }
};

dp

class Solution {
public:
    string longestPalindrome(string s) {
        int n=s.size();
        if(!n)return "";
        bool st[n][n];
        int start=0,end=0;
        for(int len=1;len<=n;len++){
            for(int i=0;i+len-1<n;i++){
                int j=i+len-1;
                st[i][j] = (len==1 || len==2 || st[i+1][j-1]) && s[i]==s[j];
                if(st[i][j] && j-i>end-start){
                    start=i;
                    end=j;
                }
            }
        }
        return s.substr(start,end-start+1);
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容