5.最長回文子串

給定一個字符串 s,找到 s 中最長的回文子串。你可以假設(shè) s 的最大長度為 1000。

示例 1:
輸入: "babad"
輸出: "bab"
注意: "aba" 也是一個有效答案。

示例 2:
輸入: "cbbd"
輸出: "bb"

class Solution {
    public String longestPalindrome(String s) {
        if (s == null || s.length() < 1) {
            return "";
        }    
        int start = 0, end = 0;
        for (int i = 0; i < s.length(); i++) {
            int len1 = expandAroundCenter(s, i, i);//abcba型,以c為擴展
            int len2 = expandAroundCenter(s, i, i + 1);//abba型,以bb中間的縫隙為擴展
            int len = Math.max(len1, len2);
            if (len > end - start) {
                start = i - (len - 1) / 2;
                end = i + len / 2;
            }
        }
        return s.substring(start, end + 1);
        
    }
    
    private int expandAroundCenter(String s, int left, int right) {
        //圍繞中心擴展
        int L = left, R = right;
        while(L >= 0 && R < s.length() && s.charAt(L) == s.charAt(R)) {
            L--;
            R++;
        }
        return R-L-1;
        //返回回文字符串的長度
    }
}

時間復(fù)雜度:
O(n^2), 由于圍繞中心來擴展回文會耗去 O(n) 的時間,所以總的復(fù)雜度為 O(n^2)
空間復(fù)雜度:O(1)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • “先生!先生!再不醒來可要揪你的胡子了!” “胡說!先生我哪里有睡著??!”偷偷用袖子拭去嘴角的口水,老先生一本正經(jīng)...
    岳聞璋閱讀 421評論 4 5
  • 親愛的,你好。 聽到這個稱呼你會不會覺得熟悉又陌生?熟悉的是我們曾經(jīng)嘴上常掛的正是這個稱呼,陌生的是我們...
    筱曉_924c閱讀 604評論 0 1
  • 是否有結(jié)婚的對象了呢? 是否家里的親人朋友都說差不多可以啦,不要太挑了,挑來挑去都花了眼啦! 不為自己也為家人著想...
    驪朵閱讀 698評論 2 1
  • 16.鏈接訪問后hover樣式就不出現(xiàn) ?被點擊訪問過的超鏈接樣式不在具有hover和active了,很多人應(yīng)該都...
    博為峰51Code教研組閱讀 347評論 0 1
  • 文/陳時航 一個始終不被人善待的人,最能識得善良,也最能珍視善良。 這句話,深深地打動了我。善良,是人性中的圭臬,...
    小時公子閱讀 703評論 2 10

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